Commit de18a26f by Li Yongyu

add mock and banner 、

parent ac2c81c7
......@@ -22,7 +22,7 @@ import com.offcn.ys.appWebAuto.frame.tools.MapUtil;
import com.offcn.ys.appWebAuto.web.tiku.pages.*;;
public class exerciseBookAction {
private AndroidDriver appdriver;
private AndroidDriver<WebElement> appdriver;
public exerciseBookAction(AndroidDriver appdriver) {
......@@ -30,6 +30,15 @@ public class exerciseBookAction {
this.appdriver = appdriver;
}
/**
* 进入首页
*/
public void intofirstpage() {
WebElement radio_home = appdriver.findElement(firstPage.radio_home);
radio_home.click();
}
/**
* 进入书架
*/
public void intoBookshelf() {
......@@ -40,8 +49,11 @@ public class exerciseBookAction {
/**
* 进入练习册+
* @throws InterruptedException
*/
public void clickinexercisebook() {
public void clickinexercisebook() throws InterruptedException {
appdriver.manage().timeouts().implicitlyWait(15,TimeUnit.SECONDS);
Thread.sleep(3000);
WebElement exercisebook = appdriver.findElement(exerciseBook.inexercisebook);
exercisebook.click();
......@@ -58,29 +70,38 @@ public class exerciseBookAction {
Restudy_ok.click();
}
/**
* 选择 二级目录
* 选择 目录及练习册
* @throws InterruptedException
*/
public void choosesecond_view() {
public void choose_view() throws InterruptedException {
WebElement clicksecond_view = appdriver.findElement(exerciseBook.second_view);
Thread.sleep(1000);
clicksecond_view.click();
WebElement clickthird_view = appdriver.findElement(exerciseBook.third_view);
Thread.sleep(1000);
clickthird_view.click();
Thread.sleep(1000);
WebElement clickfour_view = appdriver.findElement(exerciseBook.fourth_view);
Thread.sleep(1000);
clickfour_view.click();
}
/**
* 选择 三级目录
*/
public void choosethird_view() {
WebElement clickthird_view = appdriver.findElement(exerciseBook.third_view);
/*public void choosethird_view() {
List<WebElement> clickthree_view = appdriver.findElements(exerciseBook.view);
clickthird_view.click();
clickthree_view.get(1).click();;
}
/**
*//**
* 进入做题
*/
*//*
public void choosefourth_view() {
WebElement clickfourth_view = appdriver.findElement(exerciseBook.fourth_view);
List<WebElement> clickfourth_view = appdriver.findElements(exerciseBook.view);
clickfourth_view.click();
}
clickfourth_view.get(2).click();;
}*/
/**
* 选择答案
*/
......@@ -108,13 +129,16 @@ public class exerciseBookAction {
}
/**
* 错题解析返回首页
* @throws InterruptedException
*/
public void clickbackfirstpage() {
public void clickbackfirstpage() throws InterruptedException {
WebElement back = appdriver.findElement(exerciseBook.back);
back.click();
back.click();
back.click();
for (int i = 0; i < 3; i++) {
back.click();
Thread.sleep(1000);
}
}
@SuppressWarnings("unchecked")
/**
......@@ -236,47 +260,44 @@ public class exerciseBookAction {
Log.logInfo("做练习册 action");
appdriver.manage().timeouts().implicitlyWait(15,TimeUnit.SECONDS);
intofirstpage();
intoBookshelf();//进入书架
//Thread.sleep(1000);
clickinexercisebook();//进入练习册
WebElement Restudy = appdriver.findElement(exerciseBook.Restudy);
Thread.sleep(1000);
clickinexercisebook();//进入练习册
if (Restudy.getText().contains("重新学习")) {
clickRestudy();
Thread.sleep(1000);
choosesecond_view();
Thread.sleep(1000);
choosethird_view();
Thread.sleep(1000);
choosefourth_view();
chooseAnswer();
Thread.sleep(1000);
chooseAnswer();
choose_view();
for (int i = 0; i < 2; i++) {
chooseAnswer();
Thread.sleep(1000);
}
submitpaper();
Thread.sleep(1000);
erroranalysis();
}else {
choosesecond_view();
Thread.sleep(1000);
choosethird_view();
//返回重做页面,重做一次
WebElement back = appdriver.findElement(exerciseBook.back);
back.click();
Thread.sleep(1000);
choosefourth_view();
chooseAnswer();
back.click();
clickRestudy();
Thread.sleep(1000);
chooseAnswer();
choose_view();
for (int i = 0; i < 2; i++) {
chooseAnswer();
Thread.sleep(1000);
}
submitpaper();
Thread.sleep(1000);
erroranalysis();
}
}
/**
......@@ -287,19 +308,20 @@ public class exerciseBookAction {
String ExpectName = MapUtil.getValue("Expect", data);
swipeToUp(1000);
Thread.sleep(1000);
swipeToUp(1000);
Thread.sleep(1000);
swipeToUp(1000);
Thread.sleep(1000);
swipeToUp(1000);
for (int i = 0; i < 4; i++) {
swipeToUp(1000);
Thread.sleep(1000);
}
WebElement tv_analysis_des = appdriver
.findElement(exerciseBook.tv_analysis_des);
System.out.println("tv_analysis_des.getText======="
+ tv_analysis_des.getText());
if (tv_analysis_des.getText().contains(ExpectName))
return true;
else {
......
......@@ -99,7 +99,7 @@ public class firstPageAction {
}
/**
* 验证添加联系人
* 验证返回首页
*/
public boolean Verificationexercisebackfirstpage(HashMap<String, Object> data) {
......
package com.offcn.ys.appWebAuto.app.tiku.pagesAction;
import com.offcn.ys.appWebAuto.app.tiku.TK_DB;
import io.appium.java_client.android.AndroidDriver;
import java.io.File;
import java.io.IOException;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Random;
......@@ -17,19 +22,12 @@ import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.Sleeper;
import org.testng.annotations.Test;
import com.offcn.ys.appWebAuto.frame.pub.CutImage;
import com.offcn.ys.appWebAuto.frame.tools.Log;
import com.offcn.ys.appWebAuto.frame.tools.MapUtil;
import com.offcn.ys.appWebAuto.web.tiku.pages.loginPage;
public class loginAction extends TK_DB{
public class loginAction extends TK_DB {
String phone = "";
private AndroidDriver appdriver;
......@@ -39,11 +37,13 @@ public class loginAction extends TK_DB{
}
String code = "";
/**
* 删除用户名操作
*/
public void username_delete() {
WebElement username_delete = appdriver.findElement(login.username_delete);
WebElement username_delete = appdriver
.findElement(login.username_delete);
username_delete.click();
}
......@@ -79,6 +79,7 @@ public class loginAction extends TK_DB{
WebElement loginbutton = appdriver.findElement(login.loginbutton);
loginbutton.click();
}
/**
* 注册按钮
*/
......@@ -86,6 +87,7 @@ public class loginAction extends TK_DB{
WebElement register = appdriver.findElement(login.register);
register.click();
}
/**
* 注册输入手机号
*/
......@@ -93,7 +95,7 @@ public class loginAction extends TK_DB{
WebElement inputphone = appdriver.findElement(login.inputphone);
inputphone.sendKeys(phonenum);
}
/**
* 点击注册
*/
......@@ -107,54 +109,55 @@ public class loginAction extends TK_DB{
e.printStackTrace();
}
}
/**
* 注册输入验证码
* @throws InterruptedException
*
* @throws InterruptedException
*/
public void inputcheckcode() throws InterruptedException {
try {
String sql="SELECT code FROM t_code where phone = "+phone+" ORDER BY create_time DESC LIMIT 1";
//SELECT id FROM n_template ORDER BY id DESC LIMIT 1
String sql = "SELECT code FROM t_code where phone = " + phone
+ " ORDER BY create_time DESC LIMIT 1";
// SELECT id FROM n_template ORDER BY id DESC LIMIT 1
ResultSet rs_bankcard = this.sqlFromDB(sql);
rs_bankcard.last();
code = rs_bankcard.getString("code");
System.out.println("code===" + code);
} catch (Exception e) {
e.printStackTrace();
}
WebElement checkcode = appdriver.findElement(login.checkcode);
checkcode.sendKeys(code);
/*String code1 =code.substring(0,1);
String code2 = code.substring(1,2);
String code3 = code.substring(2,3);
String code4 = code.substring(3,4);
WebElement checkcode1 = appdriver.findElement(login.checkcode1);
checkcode1.sendKeys(code1);
WebElement checkcode2 = appdriver.findElement(login.checkcode2);
checkcode2.click();
checkcode2.sendKeys(code2);
WebElement checkcode3 = appdriver.findElement(login.checkcode3);
checkcode3.click();
checkcode3.sendKeys(code3);
WebElement checkcode4 = appdriver.findElement(login.checkcode4);
checkcode4.click();
checkcode4.sendKeys(code4);*/
/*
* String code1 =code.substring(0,1); String code2 =
* code.substring(1,2); String code3 = code.substring(2,3); String code4
* = code.substring(3,4);
*
* WebElement checkcode1 = appdriver.findElement(login.checkcode1);
* checkcode1.sendKeys(code1);
*
* WebElement checkcode2 = appdriver.findElement(login.checkcode2);
* checkcode2.click(); checkcode2.sendKeys(code2); WebElement checkcode3
* = appdriver.findElement(login.checkcode3); checkcode3.click();
* checkcode3.sendKeys(code3); WebElement checkcode4 =
* appdriver.findElement(login.checkcode4); checkcode4.click();
* checkcode4.sendKeys(code4);
*/
}
/**
* 注册输入密码
*/
public void inputpassword(String password) {
WebElement inputpassword = appdriver.findElement(login.password);
inputpassword.sendKeys(password);;
inputpassword.sendKeys(password);
;
}
/**
* 注册完成按钮
*/
......@@ -162,49 +165,59 @@ public class loginAction extends TK_DB{
WebElement finishbutton = appdriver.findElement(login.finishbutton);
finishbutton.click();
}
/**
* 注册完成添加考试
* @throws InterruptedException
*
* @throws InterruptedException
*/
public void chooseexam() throws InterruptedException {
WebElement chooseexam = appdriver.findElement(login.exam);
chooseexam.click();
Thread.sleep(2000);
}
/**
* 登录
*
* @throws InterruptedException
* @throws IOException
*/
@SuppressWarnings("unchecked")
@Test
public void login(HashMap<String, Object> data) throws InterruptedException {
public void login(HashMap<String, Object> data)
throws InterruptedException, IOException {
Log.logInfo("登录action");
appdriver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
// Thread.sleep(10000);
appdriver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
// Thread.sleep(10000);
username_delete();
username_input();
//Thread.sleep(1000);
// Thread.sleep(1000);
pwd_input();
//Thread.sleep(1000);
// Thread.sleep(1000);
pressReturnKey();
//Thread.sleep(1000);
// Thread.sleep(1000);
clickLoginButton();
}
@SuppressWarnings("unchecked")
@Test
public void register(HashMap<String, Object> data) throws InterruptedException {
public void register(HashMap<String, Object> data)
throws InterruptedException, IOException {
Log.logInfo("注册action");
String parameter = MapUtil.getValue("parameter", data);
//phone = MapUtil.getParameter(parameter, "username").trim();
phone = "1391"+(new Random().nextInt(9000000)+ 1000000);
// phone = MapUtil.getParameter(parameter, "username").trim();
phone = "1498" + (new Random().nextInt(9000000) + 1000000);
String password = MapUtil.getParameter(parameter, "password").trim();
appdriver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
// Thread.sleep(10000);
appdriver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
// Thread.sleep(10000);
intoRegister();
inputphone(phone);
clickregister();
......@@ -212,7 +225,9 @@ public class loginAction extends TK_DB{
inputpassword(password);
clickfinishbutton();
chooseexam();
}
/**
* 验证登陆
*/
......@@ -227,6 +242,7 @@ public class loginAction extends TK_DB{
}
}
/**
* 验证注册
*/
......
......@@ -352,21 +352,20 @@ public class mockAction {
choose_sx_exam();
chooseStart_exam();
choosetitle();
chooseAnswerCheck();
moveToleft();
chooseAnswerCheck();
moveToleft();
chooseAnswerRadio();
Thread.sleep(1000);
chooseAnswerRadio();
Thread.sleep(100);
chooseAnswerRadio();
Thread.sleep(100);
chooseAnswerRadio();
Thread.sleep(100);
chooseAnswerRadio();
for (int i = 0; i < 2; i++) { //2为复选题数量
Thread.sleep(1000);
chooseAnswerCheck();
Thread.sleep(1000);
moveToleft();
// chooseAnswerCheck();
// moveToleft();
}
for (int i = 0; i < 5; i++) { //单选题数量
chooseAnswerRadio();
Thread.sleep(1000);
}
jiexisl();
hand_ok();
choose_sl_exam();
......@@ -380,9 +379,10 @@ public class mockAction {
pressReturnKey();
Thread.sleep(1000);
pressReturnKey();
backtofirst();
Thread.sleep(1000);
//clickJoinmoke();
pressReturnKey();
Thread.sleep(1000);
}
/**
......@@ -415,7 +415,7 @@ public class mockAction {
}
/**
* 申论模考检验
* 专业课模考检验
*/
public boolean VerificationmockzykExam(HashMap<String, Object> data) {
......
package com.offcn.ys.appWebAuto.app.tiku.pagesAction;
import com.offcn.ys.appWebAuto.app.tiku.TK_DB;
import io.appium.java_client.android.AndroidDriver;
import java.io.File;
import java.io.IOException;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.concurrent.TimeUnit;
import com.offcn.ys.appWebAuto.app.tiku.pagse.*;
import org.apache.commons.codec.language.bm.Rule.Phoneme;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.Sleeper;
import org.testng.annotations.Test;
import com.offcn.ys.appWebAuto.frame.Database.db_cases;
import com.offcn.ys.appWebAuto.frame.pub.CutImage;
import com.offcn.ys.appWebAuto.frame.tools.Log;
import com.offcn.ys.appWebAuto.frame.tools.MapUtil;
import com.offcn.ys.appWebAuto.web.tiku.pages.loginPage;
public class packageAction extends TK_DB {
String phone = "";
private AndroidDriver appdriver;
public packageAction(AndroidDriver appdriver) {
super();
this.appdriver = appdriver;
}
/**
* 数据库设置
* @throws InterruptedException
*/
public void dbset() throws InterruptedException {
String sql1 = "UPDATE t_recommend_object SET is_delete = 1 WHERE exam_id = 311 AND object_id = 2826";
db_cases.updatedb(sql1);
String sql2 = "UPDATE t_recommend_object SET is_delete = 0 WHERE exam_id = 311 AND object_id = 2828";
db_cases.updatedb(sql2);
}
/**
* 进入首页
*/
public void intofirstpage() {
WebElement radio_home = appdriver.findElement(Estimate.radio_home);
radio_home.click();
}
/**
* 从banner进入学习包
* @throws IOException
*/
public void intoEstimate() throws IOException {
touchScreen();
}
/**
* 点击屏幕上半部分中间
*/
public void touchScreen(){
@SuppressWarnings("rawtypes")
int width=appdriver.manage().window().getSize().width;
int height=appdriver.manage().window().getSize().height;
int x = width*1/2; //
int y = height*1/4; //
Map tap = new HashMap();
tap.put("tapCount", new Double(2));
tap.put("touchCount", new Double(1));
tap.put("duration", new Double(0.5));
tap.put("x", x);
tap.put("y", y);
appdriver.executeScript("mobile: tap", tap);
}
/**
* 进入我的
*/
public void intomepage() {
WebElement radio_me = appdriver.findElement(firstPage.radio_me);
radio_me.click();
}
/**
* 点击[学习口袋]
*/
public void click_study() {
WebElement study = appdriver.findElement(studypackage.study);
study.click();
}
/**
* 点击 学习包的名称
*/
public void click_studyname() {
WebElement studylist = appdriver.findElement(studypackage.studylist);
studylist.click();
}
/**
* 按返回键
*/
public void pressReturnKey() {
appdriver.pressKeyCode(4);
}
/**
* 登录按钮
*/
public void clickLoginButton() {
WebElement loginbutton = appdriver.findElement(login.loginbutton);
loginbutton.click();
}
/**
* 学习包
*
* @throws InterruptedException
* @throws IOException
*/
@SuppressWarnings("unchecked")
@Test
public void studyPackage(HashMap<String, Object> data)
throws InterruptedException, IOException {
Log.logInfo("学习包action");
appdriver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
// Thread.sleep(10000);
dbset();
intofirstpage();
intoEstimate();
pressReturnKey();
intomepage();
click_study();
click_studyname();
}
/**
* 验证登陆
*/
public boolean VerificationstudyPackage(HashMap<String, Object> data) {
String ExpectName = MapUtil.getValue("Expect", data);
WebElement home = appdriver.findElement(firstPage.radio_home);
if (home.getText().contains(ExpectName)) {
return true;
} else {
return false;
}
}
}
package com.offcn.ys.appWebAuto.app.tiku.pagesFunction;
import io.appium.java_client.android.AndroidDriver;
import java.util.HashMap;
import org.openqa.selenium.NoSuchFrameException;
import org.openqa.selenium.WebDriver.Navigation;
import org.openqa.selenium.support.events.EventFiringWebDriver;
import com.offcn.ys.appWebAuto.app.tiku.pagesAction.addContacterAction;
import com.offcn.ys.appWebAuto.app.tiku.pagesAction.addExamAction;
import com.offcn.ys.appWebAuto.app.tiku.pagesAction.addPhoneAction;
import com.offcn.ys.appWebAuto.app.tiku.pagesAction.estimateAction;
import com.offcn.ys.appWebAuto.app.tiku.pagesAction.exerciseBookAction;
import com.offcn.ys.appWebAuto.app.tiku.pagesAction.loginAction;
import com.offcn.ys.appWebAuto.app.tiku.pagesAction.paperAction;
import com.offcn.ys.appWebAuto.frame.Base.BaseProcessInformation;
import com.offcn.ys.appWebAuto.frame.Base.DefinedException;
import com.offcn.ys.appWebAuto.frame.Base.PrpcessInterface;
import com.offcn.ys.appWebAuto.frame.tools.Log;
import com.offcn.ys.appWebAuto.frame.tools.MapUtil;
import com.offcn.ys.appWebAuto.frame.tools.Reflect_api;
import com.offcn.ys.appWebAuto.frame.tools.WebUtil;
import com.offcn.ys.appWebAuto.web.tiku.pagesAction.homePageAction;
public class estimateFunction extends BaseProcessInformation implements PrpcessInterface {
public AndroidDriver appdriver;
public estimateFunction(AndroidDriver appdriver) {
super();
this.appdriver = appdriver;
}
/**
* 主页面
*/
@Override
public void Process(HashMap<String, Object> data) {
String ProcessName = MapUtil.getValue("process", data);
estimateAction hpa=new estimateAction(appdriver);
Reflect_api.Process(ProcessName, hpa,data);
}
@Override
public boolean VerificationProcess(HashMap<String, Object> data) {
Log.logInfo("估分校验");
String ProcessName = MapUtil.getValue("process", data);
estimateAction hpa = new estimateAction(appdriver);
boolean result = (boolean)Reflect_api.Process("Verification"+ProcessName, hpa,data);
return result;
}
}
package com.offcn.ys.appWebAuto.app.tiku.pagesFunction;
import io.appium.java_client.android.AndroidDriver;
import java.util.HashMap;
import org.openqa.selenium.NoSuchFrameException;
import org.openqa.selenium.WebDriver.Navigation;
import org.openqa.selenium.support.events.EventFiringWebDriver;
import com.offcn.ys.appWebAuto.app.tiku.pagesAction.addContacterAction;
import com.offcn.ys.appWebAuto.app.tiku.pagesAction.addPhoneAction;
import com.offcn.ys.appWebAuto.app.tiku.pagesAction.loginAction;
import com.offcn.ys.appWebAuto.app.tiku.pagesAction.packageAction;
import com.offcn.ys.appWebAuto.frame.Base.BaseProcessInformation;
import com.offcn.ys.appWebAuto.frame.Base.DefinedException;
import com.offcn.ys.appWebAuto.frame.Base.PrpcessInterface;
import com.offcn.ys.appWebAuto.frame.tools.Log;
import com.offcn.ys.appWebAuto.frame.tools.MapUtil;
import com.offcn.ys.appWebAuto.frame.tools.Reflect_api;
import com.offcn.ys.appWebAuto.frame.tools.WebUtil;
import com.offcn.ys.appWebAuto.web.tiku.pagesAction.homePageAction;
public class packageFunction extends BaseProcessInformation implements PrpcessInterface {
public AndroidDriver appdriver;
public packageFunction(AndroidDriver appdriver) {
super();
this.appdriver = appdriver;
}
/**
* 主页面
*/
@Override
public void Process(HashMap<String, Object> data) {
String ProcessName = MapUtil.getValue("process", data);
packageAction hpa=new packageAction(appdriver);
Reflect_api.Process(ProcessName, hpa,data);
}
@Override
public boolean VerificationProcess(HashMap<String, Object> data) {
Log.logInfo("学习包验证 ");
String ProcessName = MapUtil.getValue("process", data);
packageAction hpa = new packageAction(appdriver);
boolean result = (boolean)Reflect_api.Process("Verification"+ProcessName, hpa,data);
return result;
}
}
package com.offcn.ys.appWebAuto.app.tiku.pagesFunction;
import io.appium.java_client.android.AndroidDriver;
import java.util.HashMap;
import org.openqa.selenium.NoSuchFrameException;
import org.openqa.selenium.WebDriver.Navigation;
import org.openqa.selenium.support.events.EventFiringWebDriver;
import com.offcn.ys.appWebAuto.app.tiku.pagesAction.addContacterAction;
import com.offcn.ys.appWebAuto.app.tiku.pagesAction.addExamAction;
import com.offcn.ys.appWebAuto.app.tiku.pagesAction.addPhoneAction;
import com.offcn.ys.appWebAuto.app.tiku.pagesAction.estimateAction;
import com.offcn.ys.appWebAuto.app.tiku.pagesAction.exerciseBookAction;
import com.offcn.ys.appWebAuto.app.tiku.pagesAction.loginAction;
import com.offcn.ys.appWebAuto.app.tiku.pagesAction.paperAction;
import com.offcn.ys.appWebAuto.frame.Base.BaseProcessInformation;
import com.offcn.ys.appWebAuto.frame.Base.DefinedException;
import com.offcn.ys.appWebAuto.frame.Base.PrpcessInterface;
import com.offcn.ys.appWebAuto.frame.tools.Log;
import com.offcn.ys.appWebAuto.frame.tools.MapUtil;
import com.offcn.ys.appWebAuto.frame.tools.Reflect_api;
import com.offcn.ys.appWebAuto.frame.tools.WebUtil;
import com.offcn.ys.appWebAuto.web.tiku.pagesAction.homePageAction;
public class paperFunction extends BaseProcessInformation implements PrpcessInterface {
public AndroidDriver appdriver;
public paperFunction(AndroidDriver appdriver) {
super();
this.appdriver = appdriver;
}
/**
* 主页面
*/
@Override
public void Process(HashMap<String, Object> data) {
String ProcessName = MapUtil.getValue("process", data);
paperAction hpa=new paperAction(appdriver);
Reflect_api.Process(ProcessName, hpa,data);
}
@Override
public boolean VerificationProcess(HashMap<String, Object> data) {
Log.logInfo("做试卷校验");
String ProcessName = MapUtil.getValue("process", data);
paperAction hpa = new paperAction(appdriver);
boolean result = (boolean)Reflect_api.Process("Verification"+ProcessName, hpa,data);
return result;
}
}
package com.offcn.ys.appWebAuto.app.tiku.pagse;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import io.appium.java_client.android.AndroidDriver;
/**试卷*/
public class Estimate {
/** [首页]菜单 */
public static final By radio_home =By.id("radio_home");
/** 轮播图片 */
public static final By ImageView =By.className("android.widget.ImageView");
//开始估分
public static final By begin = By.id("begin_evaluate");//classname: android.widget.LinearLayout
//继续估分
public static final By continu = By.id("continue_evaluate");//classname: android.widget.LinearLayout
//开始答题
public static final By xcstartanswer =By.id("rl_start_answer");
//输入分数
public static final By inputscore =By.id("user_score");
//交卷并查看解析
public static final By submit =By.id("rl_at_once_paper");
/** 全部解析 */
public static final By all_analysis =By.id("tv_all_analysis"); //
public static final By exam_ok =By.id("tv_ok"); //
//解析页参考答案
public static final By reference =By.id("tv_reference_version");
//申论开始估分
public static final By slbegin = By.name("开始估分");//classname: android.widget.LinearLayout
/** 选择答案 */
public static final By chooseanswerB =By.name("B");//
public static final By chooseanswerA =By.name("A");//
/** 交卷 */
public static final By submitpage =By.id("submit_pager");//
/** 确认 */
//选择形测
public static final By sl = By.name("申论");//
//行测多项选择题
public static final By slsj =By.id("content_layout");
//开始答题
public static final By start =By.id("begin_do_exercise");
//点击输入答案
public static final By clickanswer =By.id("edit");
//输入答案
public static final By inputanswer =By.id("input_answer");
//答案内容
public static final By answercontent =By.id("input_content");
/** 申论交卷 */
public static final By submitsl =By.name("完成作答");//
// 确定
public static final By sure_ok =By.id("tv_ok");
/** 答题卡 */
public static final By answerCard =By.id("answerCardRl"); //
/** 申论交卷查看解析 */
public static final By jiexisl =By.name("交卷并查看解析");//
/** 返回试卷列表 */
public static final By backpaperlist =By.id("go_back_to_paper_list");
/** 试卷列表检查 */
public static final By viewnum =By.className("android.widget.TextView");
//总题数
public static final By total =By.id("total");
//错题解析
public static final By error_analysis =By.id("error_analysis");
//错题解析内容
public static final By tv_analysis_des =By.id("tv_analysis_des");
//返回
public static final By back =By.id("back");
//回
public static final By lt_left =By.id("lt_left");
}
......@@ -4,11 +4,11 @@ package com.offcn.ys.appWebAuto.app.tiku.pagse;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import io.appium.java_client.android.AndroidDriver;
/**添加考试*/
/**练习册*/
public class exerciseBook {
//进入练习册
//进入练习册tv_exercise_title
public static final By inexercisebook = By.id("tv_exercise_title");//classname: android.widget.LinearLayout
//重新学习
public static final By Restudy =By.id("tv_book_list_select");
......@@ -16,11 +16,12 @@ public class exerciseBook {
public static final By Restudy_ok =By.id("tv_ok");
//比重目录
public static final By second_view =By.id("rl_second_view");
// public static final By view = By.className("android.widget.RelativeLayout");
public static final By second_view =By.id("tv_second_floor_title");
// //比重基本公式
public static final By third_view =By.id("rl_thrid_view");
public static final By third_view =By.id("tv_three_floor_title");
//题
public static final By fourth_view =By.id("rl_fourth_view");
public static final By fourth_view =By.id("tv_fourth_floor_title");
//答案选择
public static final By chooseanswer =By.name("B");
//交卷
......
package com.offcn.ys.appWebAuto.app.tiku.pagse;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import io.appium.java_client.android.AndroidDriver;
/**试卷*/
public class paper {
/** 试卷菜单 */
public static final By radio_exam =By.id("radio_old_exam");
//选择形测
public static final By xince = By.id("content_layout");//classname: android.widget.LinearLayout
//行测多项选择题
public static final By duoxuan =By.id("ll_root");
/** 选择答案 */
public static final By chooseanswerB =By.name("B");//
public static final By chooseanswerA =By.name("A");//
/** 交卷 */
public static final By submitpage =By.id("submit_pager");//
/** 确认 */
/** 全部解析 */
public static final By all_analysis =By.id("tv_all_analysis"); //
public static final By exam_ok =By.id("tv_ok"); //
//选择形测
public static final By sl = By.name("申论");//
//行测多项选择题
public static final By slsj =By.id("content_layout");
//开始答题
public static final By start =By.id("begin_do_exercise");
//点击输入答案
public static final By clickanswer =By.id("edit");
//输入答案
public static final By inputanswer =By.id("input_answer");
//答案内容
public static final By answercontent =By.id("input_content");
/** 申论交卷 */
public static final By submitsl =By.name("完成作答");//
// 确定
public static final By sure_ok =By.id("tv_ok");
/** 答题卡 */
public static final By answerCard =By.id("answerCardRl"); //
/** 申论交卷查看解析 */
public static final By jiexisl =By.name("交卷并查看解析");//
/** 返回试卷列表 */
public static final By backpaperlist =By.id("go_back_to_paper_list");
/** 试卷列表检查 */
public static final By viewnum =By.className("android.widget.TextView");
//总题数
public static final By total =By.id("total");
//错题解析
public static final By error_analysis =By.id("error_analysis");
//错题解析内容
public static final By tv_analysis_des =By.id("tv_analysis_des");
//返回
public static final By back =By.id("back");
//回
public static final By lt_left =By.id("lt_left");
}
package com.offcn.ys.appWebAuto.app.tiku.pagse;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import io.appium.java_client.android.AndroidDriver;
/**主页面左侧导航栏*/
public class studypackage {
/** 设置 */
public static final By set =By.name("设置");
/** 退出登录 */
public static final By logoutbutton =By.name("退出登录");
/** 学习口袋 */
public static final By study =By.id("rl_me_learn_package");
/** 学习包列表页 */
public static final By studylist =By.id("tv_learn_package_name");
}
package com.offcn.ys.appWebAuto.frame.Database;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.http.util.Args;
import org.testng.annotations.Test;
import com.offcn.ys.appWebAuto.app.tiku.TK_DB;
import com.offcn.ys.appWebAuto.frame.tools.Log;
public class db_cases extends TK_DB{
@Test
public static void updatedb(String sql){
Integer result=null;
try {
// "UPDATE t_recommend_object SET is_delete = 0 WHERE exam_id = 311 AND object_id = 2826" 轮播图
result = stmt.executeUpdate(sql);//
if (result == -1) {
Log.logInfo("update failed! ");
}else{
Log.logInfo("update OK! " );
}
} catch (SQLException e) {
Log.logError("update failed! ");
}
}
}
......@@ -32,7 +32,7 @@ import com.offcn.ys.appWebAuto.frame.tools.Log;
*/
public class CutImage {
public static void main(String[] args) {
cutImage("d:\\pwd.png","d:\\pwd1.png",0,0,1080,1920);
cutImage("d:\\3.png","d:\\copy.png",0,200,1080,800);
}
/**
......@@ -50,12 +50,12 @@ public class CutImage {
try{
File directory = new File(".");
String sourceFile = directory.getCanonicalPath();
File screenShot = new File(sourceFile+File.separator+"img"+File.separator+dateString+casename+ ".png");
File screenShot = new File(sourceFile+File.separator+"img"+File.separator+casename+ ".png");
FileUtils.copyFile(srcFile, screenShot);
}catch(Exception e){
e.printStackTrace();
}
Log.logInfo("截图保存在: "+"img"+File.separator+dateString+ casename+ ".png");
Log.logInfo("截图保存在: "+"img"+File.separator+ casename+ ".png");
}
/**
* web拍照
......
package com.offcn.ys.appWebAuto.frame.pub;
import io.appium.java_client.android.AndroidDriver;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import javax.imageio.ImageIO;
import javax.imageio.ImageReadParam;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.support.events.EventFiringWebDriver;
import com.offcn.ys.appWebAuto.frame.Base.BaseProcessInformation;
import com.offcn.ys.appWebAuto.frame.tools.Log;
/**
* 图片裁剪
* @param srcImageFile 图片裁剪地址
* @param result 图片输出文件夹
* @param destWidth 图片裁剪宽度
* @param destHeight 图片裁剪高度
*/
public class CutImagenew {
public static void main(String[] args) {
//cutImage("d:\\3.png","d:\\copy.png",0,200,1080,800);
//文件与BufferedImage间的转换
BufferedImage bi=file2img("d:\\3.png"); //读取图片
BufferedImage bii=img_tailor(bi,0,200,1080,800);
img2file(bii,"jpg","d:\\copy1.png"); //生成图片
}
public static BufferedImage img_tailor(BufferedImage src,int x,int y,int width,int height) {
BufferedImage back=src.getSubimage(x,y,width,height);
return back;
}
//读取图片
public static BufferedImage file2img(String imgpath) {
try {
BufferedImage bufferedImage=ImageIO.read(new File(imgpath));
return bufferedImage;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
//保存图片,extent为格式,"jpg"、"png"等
public static void img2file(BufferedImage img,String extent,String newfile) {
try {
ImageIO.write(img, extent, new File(newfile));
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* android拍照
*/
public static void paizhao(AndroidDriver driver,String casename){
Log.logInfo("开始拍照。。。");
SimpleDateFormat format = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss");
String dateString = format.format(new Date());
dateString=dateString+BaseProcessInformation.TestName;
File srcFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
try{
File directory = new File(".");
String sourceFile = directory.getCanonicalPath();
File screenShot = new File(sourceFile+File.separator+"img"+File.separator+dateString+casename+ ".png");
FileUtils.copyFile(srcFile, screenShot);
}catch(Exception e){
e.printStackTrace();
}
Log.logInfo("截图保存在: "+"img"+File.separator+dateString+ casename+ ".png");
}
/**
* web拍照
*/
public static void paizhao(EventFiringWebDriver driver,String casename){
Log.logInfo("开始拍照。。。");
SimpleDateFormat format = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss");
String dateString = format.format(new Date());
dateString=dateString+BaseProcessInformation.TestName;
File srcFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
try{
File directory = new File(".");
String sourceFile = directory.getCanonicalPath();
File screenShot = new File(sourceFile+File.separator+"img"+File.separator+dateString+casename+".png");
FileUtils.copyFile(srcFile, screenShot);
}catch(Exception e){
e.printStackTrace();
}
Log.logInfo("截图保存在: "+"img"+File.separator+dateString+casename+".png");
}
public final static void cutImage(String srcImageFile, String result, int x,int y, int destWidth, int destHeight) {
try {
Thread.sleep(1000);
Iterator iterator = ImageIO.getImageReadersByFormatName("PNG");/*PNG,BMP*/
ImageReader reader = (ImageReader)iterator.next();/*获取图片尺寸*/
InputStream inputStream = new FileInputStream(srcImageFile);
ImageInputStream iis = ImageIO.createImageInputStream(inputStream);
reader.setInput(iis, true);
ImageReadParam param = reader.getDefaultReadParam();
Rectangle rectangle = new Rectangle(x,y, destWidth, destHeight);/*指定截取范围*/
param.setSourceRegion(rectangle);
BufferedImage bi = reader.read(0,param);
ImageIO.write(bi, "JPEG", new File(result));
} catch (Exception e) {
e.printStackTrace();
System.out.println(("图片裁剪出现异常:"+e));
}
}
}
package com.offcn.ys.appWebAuto.frame.tools;
package com.offcn.ys.appWebAuto.frame.pub;
import java.io.File;
import net.sourceforge.tess4j.ITesseract;
......
package com.offcn.ys.appWebAuto.frame.pub;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.imageio.ImageIO;
/**
* 比较两张图片的相似度
* @author Guihua
*
*/
public class xiangsidu {
// 改变成二进制码
public static String[][] getPX(String args) {
int[] rgb = new int[3];
File file = new File(args);
BufferedImage bi = null;
try {
bi = ImageIO.read(file);
} catch (Exception e) {
e.printStackTrace();
}
int width = bi.getWidth();
int height = bi.getHeight();
int minx = bi.getMinX();
int miny = bi.getMinY();
String[][] list = new String[width][height];
for (int i = minx; i < width; i++) {
for (int j = miny; j < height; j++) {
int pixel = bi.getRGB(i, j);
rgb[0] = (pixel & 0xff0000) >> 16;
rgb[1] = (pixel & 0xff00) >> 8;
rgb[2] = (pixel & 0xff);
list[i][j] = rgb[0] + "," + rgb[1] + "," + rgb[2];
}
}
return list;
}
public static int compareImage(String imgPath1, String imgPath2){
String[] images = {imgPath1, imgPath2};
if (images.length == 0) {
System.out.println("Usage >java BMPLoader ImageFile.bmp");
System.exit(0);
}
// 分析图片相似度 begin
String[][] list1 = getPX(images[0]);
String[][] list2 = getPX(images[1]);
int xiangsi = 0;
int busi = 0;
int i = 0, j = 0;
for (String[] strings : list1) {
if ((i + 1) == list1.length) {
continue;
}
for (int m=0; m<strings.length; m++) {
try {
String[] value1 = list1[i][j].toString().split(",");
String[] value2 = list2[i][j].toString().split(",");
int k = 0;
for (int n=0; n<value2.length; n++) {
if (Math.abs(Integer.parseInt(value1[k]) - Integer.parseInt(value2[k])) < 5) {
xiangsi++;
} else {
busi++;
}
}
} catch (RuntimeException e) {
continue;
}
j++;
}
i++;
}
list1 = getPX(images[1]);
list2 = getPX(images[0]);
i = 0;
j = 0;
// for (String[] strings : list1) {
for (int x=0; x<list1.length; x++) {
if ((i + 1) == list1.length) {
continue;
}
for (int m=0; m<list1[i].length; m++) {
try {
String[] value1 = list1[i][j].toString().split(",");
String[] value2 = list2[i][j].toString().split(",");
int k = 0;
for (int n=0; n<value2.length; n++) {
if (Math.abs(Integer.parseInt(value1[k]) - Integer.parseInt(value2[k])) < 5) {
xiangsi++;
} else {
busi++;
}
}
} catch (RuntimeException e) {
continue;
}
j++;
}
i++;
}
String baifen = "";
try {
baifen = ((Double.parseDouble(xiangsi + "") / Double.parseDouble((busi + xiangsi) + "")) + "");
baifen = baifen.substring(baifen.indexOf(".") + 1, baifen.indexOf(".") + 3);
} catch (Exception e) {
baifen = "0";
}
if (baifen.length() <= 0) {
baifen = "0";
}
if(busi == 0){
baifen="100";
}
System.out.println("相似像素数量:" + xiangsi + " 不相似像素数量:" + busi + " 相似率:" + Integer.parseInt(baifen) + "%");
return Integer.parseInt(baifen);
}
public static void main(String[] args) throws IOException{
// xiangsidu.compareImage("D:\\1.png", "D:\\1.png");
File directory = new File(".");
String sourceFile = directory.getCanonicalPath();
SimpleDateFormat st = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 设置日期格式
System.out.println(st.format(new Date()));// new Date()为获取当前系统时间
compareImage("D:\\1.png", "D:\\2.jpg");
SimpleDateFormat end = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 设置日期格式
System.out.println(end.format(new Date()));// new Date()为获取当前系统时间
// compareImage("D:\\1.png", "D:\\1.png");
//System.out.println("fenshu==" + fenshu);
}
}
\ No newline at end of file
......@@ -61,12 +61,18 @@ import com.offcn.ys.appWebAuto.testdata.WebAndAppData;
public void setUp() throws Exception {
// set up appium
// AndroidDriver appdriver;
}
@AfterMethod(alwaysRun=true)
public void tearDown() throws Exception {
//appdriver.quit();
if (driver!=null) {
driver.quit();
}
if (appdriver!=null) {
appdriver.quit();
}
}
@AfterClass
......@@ -97,6 +103,5 @@ import com.offcn.ys.appWebAuto.testdata.WebAndAppData;
//appdriver.quit();
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated by org.testng.reporters.JUnitReportReporter -->
<testsuite hostname="IBM-PC" name="com.offcn.ys.appWebAuto.app.tiku.pagesAction.paperAction" tests="2" failures="0" timestamp="3 Jul 2019 03:47:51 GMT" time="0.000" errors="2">
<testcase name="sldoExam" time="0.000" classname="com.offcn.ys.appWebAuto.app.tiku.pagesAction.paperAction">
<error type="org.testng.TestNGException" message="
Method sldoExam requires 1 parameters but 0 were supplied in the @Test annotation.">
<![CDATA[org.testng.TestNGException:
Method sldoExam requires 1 parameters but 0 were supplied in the @Test annotation.
at org.testng.internal.Parameters.checkParameterTypes(Parameters.java:191)
at org.testng.internal.Parameters.createParameters(Parameters.java:127)
at org.testng.internal.Parameters.createParameters(Parameters.java:376)
at org.testng.internal.Parameters.handleParameters(Parameters.java:451)
at org.testng.internal.Invoker.handleParameters(Invoker.java:1270)
at org.testng.internal.Invoker.createParameters(Invoker.java:985)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1075)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108)
at org.testng.TestRunner.privateRun(TestRunner.java:774)
at org.testng.TestRunner.run(TestRunner.java:624)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:359)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:354)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:312)
at org.testng.SuiteRunner.run(SuiteRunner.java:261)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1191)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1116)
at org.testng.TestNG.run(TestNG.java:1024)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:112)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:205)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:176)
]]>
</error>
</testcase> <!-- sldoExam -->
<testcase name="xcdoExam" time="0.000" classname="com.offcn.ys.appWebAuto.app.tiku.pagesAction.paperAction">
<error type="org.testng.TestNGException" message="
Method xcdoExam requires 1 parameters but 0 were supplied in the @Test annotation.">
<![CDATA[org.testng.TestNGException:
Method xcdoExam requires 1 parameters but 0 were supplied in the @Test annotation.
at org.testng.internal.Parameters.checkParameterTypes(Parameters.java:191)
at org.testng.internal.Parameters.createParameters(Parameters.java:127)
at org.testng.internal.Parameters.createParameters(Parameters.java:376)
at org.testng.internal.Parameters.handleParameters(Parameters.java:451)
at org.testng.internal.Invoker.handleParameters(Invoker.java:1270)
at org.testng.internal.Invoker.createParameters(Invoker.java:985)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1075)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108)
at org.testng.TestRunner.privateRun(TestRunner.java:774)
at org.testng.TestRunner.run(TestRunner.java:624)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:359)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:354)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:312)
at org.testng.SuiteRunner.run(SuiteRunner.java:261)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1191)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1116)
at org.testng.TestNG.run(TestNG.java:1024)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:112)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:205)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:176)
]]>
</error>
</testcase> <!-- xcdoExam -->
</testsuite> <!-- com.offcn.ys.appWebAuto.app.tiku.pagesAction.paperAction -->
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated by org.testng.reporters.JUnitReportReporter -->
<testsuite hostname="IBM-PC" name="com.offcn.ys.appWebAuto.frame.Database.db_cases" tests="1" failures="0" timestamp="5 Jul 2019 06:49:14 GMT" time="0.078" errors="0">
<testcase name="test" time="0.078" classname="com.offcn.ys.appWebAuto.frame.Database.db_cases"/>
</testsuite> <!-- com.offcn.ys.appWebAuto.frame.Database.db_cases -->
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment