Commit de18a26f by Li Yongyu

add mock and banner 、

parent ac2c81c7
package com.offcn.ys.appWebAuto.app.tiku.pagesAction;
import io.appium.java_client.MobileElement;
import io.appium.java_client.TouchAction;
import io.appium.java_client.android.AndroidDriver;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import com.offcn.ys.appWebAuto.app.tiku.pagse.*;
import org.apache.poi.ss.formula.functions.Sumif;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.Sleeper;
import org.testng.AssertJUnit;
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.*;;
public class estimateAction {
private AndroidDriver<WebElement> appdriver;
public static int Number;
public estimateAction(AndroidDriver appdriver) {
super();
this.appdriver = appdriver;
}
/**
* 数据库设置轮播图
* @throws InterruptedException
*/
public void dbset() throws InterruptedException {
String sql2 = "UPDATE t_recommend_object SET is_delete = 1 WHERE exam_id = 311 AND object_id = 2828";
db_cases.updatedb(sql2);
String sql1 = "UPDATE t_recommend_object SET is_delete = 0 WHERE exam_id = 311 AND object_id = 2826";
db_cases.updatedb(sql1);
Thread.sleep(1000);
}
/**
* 进入首页
*/
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 startSLEstimate() {
WebElement slstart = appdriver.findElement(Estimate.slbegin);
slstart.click();
}
/**
* 输入用户分数
*/
public void inputUsercore() {
WebElement usercore = appdriver.findElement(Estimate.inputscore);
usercore.click();
usercore.sendKeys("10");
pressReturnKey();
}
/**
* 交卷并查看解析
*/
public void submitandjiexi() {
WebElement submit = appdriver.findElement(Estimate.submit);
submit.click();
}
/**
* 确认
*/
public void hand_ok() {
WebElement handok = appdriver.findElement(Estimate.exam_ok);
handok.click();
}
/**
* 全部解析
* @throws InterruptedException
*/
public void clickAllAnalysis() throws InterruptedException {
WebElement clickall_analysis = appdriver.findElement(Estimate.all_analysis);
clickall_analysis.click();
}
/**
* 点击开始估分
*/
public void startEstimate() {
WebElement start = appdriver.findElement(Estimate.begin);
start.click();
}
/**
* 点击开始答题
*/
public void startAnswer() {
WebElement xcstart = appdriver.findElement(Estimate.xcstartanswer);
xcstart.click();
}
/**
* 底端向左滑动
*/
public void downmoveToleft() {
int width=appdriver.manage().window().getSize().width;
int height=appdriver.manage().window().getSize().height;
TouchAction tAction = new TouchAction(appdriver);
tAction.press(width - 100, height *5/ 6).waitAction(200).moveTo(100, height *5/ 6).release().perform();
}
/**
* 向左滑动
*/
public void moveToleft() {
int width=appdriver.manage().window().getSize().width;
int height=appdriver.manage().window().getSize().height;
TouchAction tAction = new TouchAction(appdriver);
tAction.press(width - 100, height *4/ 5).waitAction(200).moveTo(100, height *4/ 5).release().perform();
}
/**
* 重新学习
*/
public void clickRestudy() {
WebElement Restudy = appdriver.findElement(exerciseBook.Restudy);
Restudy.click();
WebElement Restudy_ok = appdriver.findElement(exerciseBook.Restudy_ok);
Restudy_ok.click();
}
/**
/**
* 错题解析
*/
public void erroranalysis() {
WebElement error_analysis = appdriver.findElement(exerciseBook.error_analysis);
error_analysis.click();
}
/**
* 错题解析返回首页
*/
public void clickbackfirstpage() {
WebElement back = appdriver.findElement(paper.back);
back.click();
back.click();
}
@SuppressWarnings("unchecked")
/**
* 点击屏幕上半部分中间
*/
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 moveToUp() {
int width=appdriver.manage().window().getSize().width;
int height=appdriver.manage().window().getSize().height;
TouchAction tAction = new TouchAction(appdriver);
int y1 = height*4/5; //上滑的开始点,从y1开始也就是屏幕的四分之三处
int y2 = height*1/5; //上滑的结束点,到y2结束也就是屏幕的四分之一处
tAction.press(width/2,y1).waitAction(200).moveTo(width/2,y2).release().perform();
tAction.press(width/2,y1).waitAction(200).moveTo(width/2,y2).release().perform();
}
/**
* 向上滑动
*/
public void moveToUp_down() {
int width=appdriver.manage().window().getSize().width;
int height=appdriver.manage().window().getSize().height;
TouchAction tAction = new TouchAction(appdriver);
int y1 = height*5/6; //上滑的开始点,从y1开始也就是屏幕的四分之三处
int y2 = height*4/6; //上滑的结束点,到y2结束也就是屏幕的四分之一处
tAction.press(width/2,y1).waitAction(200).moveTo(width/2,y2).release().perform();
tAction.press(width/2,y1).waitAction(200).moveTo(width/2,y2).release().perform();
}
/**
* 滑动到元素或滑动到页面底部
*/
// 获取应用占屏幕大小
public int[] appScreen() {
int width = appdriver.manage().window().getSize().getWidth();
int height = appdriver.manage().window().getSize().getHeight();
int[] appSize = { width, height };
return appSize;
}
// 向上滑动
public void swipeToUp(int duration) {
int starty = appScreen()[1] * 4 / 6;
int endy = appScreen()[1] * 5 / 6;
int x = appScreen()[0] * 5 / 6;
try {
appdriver.swipe(x, starty, x, endy, duration);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 向下滑动
*/
public void moveToDown() {
int width=appdriver.manage().window().getSize().width;
int height=appdriver.manage().window().getSize().height;
TouchAction tAction = new TouchAction(appdriver);
int y1 = height*2/5; //上滑的开始点,从y1开始也就是屏幕的四分之三处
int y2 = height*4/5; //上滑的结束点,到y2结束也就是屏幕的四分之一处
tAction.press(width/2,y1).waitAction(200).moveTo(width/2,y2).release().perform();
tAction.press(width/2,y1).waitAction(200).moveTo(width/2,y2).release().perform();
}
/**
* 输入 用户名操作
*/
/**
* 按返回键
*/
public void pressReturnKey() {
appdriver.pressKeyCode(4);
}
/**
* 行测估分
*
* @throws InterruptedException
* @throws IOException
*/
@SuppressWarnings("unchecked")
@Test
public void xcestimate(HashMap<String, Object> data) throws InterruptedException, IOException {
Log.logInfo("行测估分 action");
appdriver.manage().timeouts().implicitlyWait(15,TimeUnit.SECONDS);
dbset();
intofirstpage();
intoEstimate();
Thread.sleep(3000);
startEstimate();
startAnswer();
inputUsercore();
Thread.sleep(1000);
moveToleft();//左滑
Thread.sleep(500);
submitandjiexi();
hand_ok();
Thread.sleep(500);
clickAllAnalysis();
}
/**
* 申论估分
*
* @throws InterruptedException
* @throws IOException
*/
@SuppressWarnings("unchecked")
@Test
public void slestimate(HashMap<String, Object> data) throws InterruptedException, IOException {
Log.logInfo("申论做试卷 action");
appdriver.manage().timeouts().implicitlyWait(15,TimeUnit.SECONDS);
dbset();
intofirstpage();
intoEstimate();
Thread.sleep(3000);
startSLEstimate();
startAnswer();
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 3; j++) {
moveToUp_down();//向上滑动3次
}
inputUsercore();
Thread.sleep(1000);
moveToleft();//左滑
}
Thread.sleep(500);
submitandjiexi();
hand_ok();
Thread.sleep(500);
clickAllAnalysis();
}
/**
* 行测估分校验
* @throws InterruptedException
*/
public boolean Verificationxcestimate(HashMap<String, Object> data) throws InterruptedException {
String ExpectName = MapUtil.getValue("Expect", data);
WebElement reference = appdriver
.findElement(Estimate.reference);
System.out.println("reference.getText======="
+ reference.getText()); //验证解析页面是否存在参考答案
if (reference.getText().contains(ExpectName))
{
for (int i = 0; i < 3; i++) {//从解析页面返回到首页
pressReturnKey();
Thread.sleep(1000);
}
return true;
}
else {
return false;
}
}
/**
* 申论估分校验
* @throws InterruptedException
*/
public boolean Verificationslestimate(HashMap<String, Object> data) throws InterruptedException {
String ExpectName = MapUtil.getValue("Expect", data);
WebElement reference = appdriver
.findElement(Estimate.reference);
System.out.println("reference.getText======="
+ reference.getText()); //验证解析页面是否存在正确答案
if (reference.getText().contains(ExpectName))
{
for (int i = 0; i < 3; i++) {//从解析页面返回到首页
pressReturnKey();
Thread.sleep(1000);
}
return true;
}
else {
return false;
}
}
}
......@@ -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.pagesAction;
import io.appium.java_client.MobileElement;
import io.appium.java_client.TouchAction;
import io.appium.java_client.android.AndroidDriver;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import com.offcn.ys.appWebAuto.app.tiku.pagse.*;
import org.apache.poi.ss.formula.functions.Sumif;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.Sleeper;
import org.testng.AssertJUnit;
import org.testng.annotations.Test;
import com.offcn.ys.appWebAuto.frame.tools.Log;
import com.offcn.ys.appWebAuto.frame.tools.MapUtil;
import com.offcn.ys.appWebAuto.web.tiku.pages.*;;
public class paperAction {
private AndroidDriver<WebElement> appdriver;
public static int Number;
public paperAction(AndroidDriver appdriver) {
super();
this.appdriver = appdriver;
}
/**
* 进入试卷页
*/
public void intofirstpage() {
WebElement radio_exam = appdriver.findElement(paper.radio_exam);
radio_exam.click();
}
/**
* 选择行测
*/
public void chooseXince() {
WebElement xince = appdriver.findElement(paper.xince);
xince.click();
}
/**
* 进入行测多选题
* @throws InterruptedException
*/
public void clickduoxuan() throws InterruptedException {
List<WebElement> duoxuan = appdriver.findElements(paper.duoxuan);
duoxuan.get(0).click();
}
/**
* 进入行测单选题
* @throws InterruptedException
*/
public void clickradio() throws InterruptedException {
List<WebElement> duoxuan = appdriver.findElements(paper.duoxuan);
duoxuan.get(1).click();
}
/**
* 选择题复选答案
*/
public void chooseAnswerCheck() {
WebElement answerA = appdriver.findElement(paper.chooseanswerA);
answerA.click();
WebElement answerB = appdriver.findElement(paper.chooseanswerB);
answerB.click();
}
/**
* 选择题单选答案
*/
public void chooseAnswerRadio() {
WebElement answer = appdriver.findElement(paper.chooseanswerA);
answer.click();
}
/**
* 交卷
*/
public void submitpage() {
WebElement submit = appdriver.findElement(paper.submitpage);
submit.click();
}
/**
* 确认
*/
public void hand_ok() {
WebElement handok = appdriver.findElement(paper.exam_ok);
handok.click();
}
/**
* 全部解析
* @throws InterruptedException
*/
public void clickAllAnalysis() throws InterruptedException {
WebElement clickall_analysis = appdriver.findElement(paper.all_analysis);
clickall_analysis.click();
}
/**
* 申论选择
* @throws InterruptedException
*/
public void clickSL() throws InterruptedException {
WebElement clicksl = appdriver.findElement(paper.sl);
clicksl.click();
}
/**
* 申论选择试卷
* @throws InterruptedException
*/
public void chooseSLSJ() throws InterruptedException {
List<WebElement> chooseslsj = appdriver.findElements(paper.slsj);
chooseslsj.get(0).click();
}
/**
* 申论开始答题
* @throws InterruptedException
*/
public void startSL() throws InterruptedException {
WebElement start = appdriver.findElement(paper.start);
start.click();
}
/**
* 输入答案
* @throws InterruptedException
*/
public void inputAnswer() throws InterruptedException {
WebElement clickAnswer = appdriver.findElement(paper.clickanswer);
clickAnswer.click();//点击输入答案按钮
WebElement inputanswer = appdriver.findElement(paper.inputanswer);
inputanswer.sendKeys("test");//输入答案
for (int i = 0; i < 2; i++) {
pressReturnKey();//点击返回
}
clickAnswer.click();//点击修改答案按钮
inputanswer.clear();
inputanswer.sendKeys("testNEW");//输入答案
for (int i = 0; i < 2; i++) {
pressReturnKey();//点击返回
}
WebElement answercontent = appdriver.findElement(paper.answercontent);
if (answercontent.getText().contains("testNEW")) {
AssertJUnit.assertTrue(true);
}else {
AssertJUnit.assertTrue(false);
}
}
/**
* 完成作答
* @throws InterruptedException
*/
public void finishanswer() throws InterruptedException {
WebElement submitsl = appdriver.findElement(paper.submitsl);
submitsl.click();
WebElement huafenjiegou = appdriver.findElement(paper.sure_ok);//划分结构确定
huafenjiegou.click();
}
/**
* 点击答题卡
* @throws InterruptedException
*/
public void clickAnswerCard() throws InterruptedException {
WebElement answerCard = appdriver.findElement(paper.answerCard);
answerCard.click();
}
/**
* 申论交卷并查看解析
* @throws InterruptedException
*/
public void submitandjiexisl() throws InterruptedException {
WebElement jiexisl = appdriver.findElement(paper.jiexisl);
jiexisl.click();
}
/**
* 申论交卷并查看解析
* @throws InterruptedException
*/
public void backPaperList() throws InterruptedException {
WebElement backpaperlist = appdriver.findElement(paper.backpaperlist);
backpaperlist.click();
}
/**
* 底端向左滑动
*/
public void downmoveToleft() {
int width=appdriver.manage().window().getSize().width;
int height=appdriver.manage().window().getSize().height;
TouchAction tAction = new TouchAction(appdriver);
tAction.press(width - 100, height *5/ 6).waitAction(200).moveTo(100, height *5/ 6).release().perform();
}
/**
* 向左滑动
*/
public void moveToleft() {
int width=appdriver.manage().window().getSize().width;
int height=appdriver.manage().window().getSize().height;
TouchAction tAction = new TouchAction(appdriver);
tAction.press(width - 100, height *2/ 3).waitAction(200).moveTo(100, height *2/ 3).release().perform();
}
/**
* 重新学习
*/
public void clickRestudy() {
WebElement Restudy = appdriver.findElement(exerciseBook.Restudy);
Restudy.click();
WebElement Restudy_ok = appdriver.findElement(exerciseBook.Restudy_ok);
Restudy_ok.click();
}
/**
/**
* 错题解析
*/
public void erroranalysis() {
WebElement error_analysis = appdriver.findElement(exerciseBook.error_analysis);
error_analysis.click();
}
/**
* 错题解析返回首页
*/
public void clickbackfirstpage() {
WebElement back = appdriver.findElement(paper.back);
back.click();
back.click();
}
@SuppressWarnings("unchecked")
/**
* 点击屏幕中间
*/
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/2; //
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 moveToUp() {
int width=appdriver.manage().window().getSize().width;
int height=appdriver.manage().window().getSize().height;
TouchAction tAction = new TouchAction(appdriver);
int y1 = height*4/5; //上滑的开始点,从y1开始也就是屏幕的四分之三处
int y2 = height*1/5; //上滑的结束点,到y2结束也就是屏幕的四分之一处
tAction.press(width/2,y1).waitAction(200).moveTo(width/2,y2).release().perform();
tAction.press(width/2,y1).waitAction(200).moveTo(width/2,y2).release().perform();
}
/**
* 滑动到元素或滑动到页面底部
*/
// 获取应用占屏幕大小
public int[] appScreen() {
int width = appdriver.manage().window().getSize().getWidth();
int height = appdriver.manage().window().getSize().getHeight();
int[] appSize = { width, height };
return appSize;
}
// 向上滑动
public void swipeToUp(int duration) {
int starty = appScreen()[1] * 4 / 5;
int endy = appScreen()[1] * 3 / 5;
int x = appScreen()[0] * 2 / 3;
try {
appdriver.swipe(x, starty, x, endy, duration);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 向下滑动
*/
public void moveToDown() {
int width=appdriver.manage().window().getSize().width;
int height=appdriver.manage().window().getSize().height;
TouchAction tAction = new TouchAction(appdriver);
int y1 = height*2/5; //上滑的开始点,从y1开始也就是屏幕的四分之三处
int y2 = height*4/5; //上滑的结束点,到y2结束也就是屏幕的四分之一处
tAction.press(width/2,y1).waitAction(200).moveTo(width/2,y2).release().perform();
tAction.press(width/2,y1).waitAction(200).moveTo(width/2,y2).release().perform();
}
/**
* 输入 用户名操作
*/
/**
* 按返回键
*/
public void pressReturnKey() {
appdriver.pressKeyCode(4);
}
/**
* 行测做试卷
*
* @throws InterruptedException
*/
@SuppressWarnings("unchecked")
@Test
public void xcdoExam(HashMap<String, Object> data) throws InterruptedException {
Log.logInfo("做试卷 action");
appdriver.manage().timeouts().implicitlyWait(15,TimeUnit.SECONDS);
intofirstpage();
Thread.sleep(3000);
chooseXince();
Thread.sleep(1000);
clickduoxuan();
for (int i = 0; i < 5; i++) {//5为单选题数量
chooseAnswerCheck();
Thread.sleep(1000);
moveToleft();
}
for (int i = 0; i < 5; i++) { //5为单选题数量
chooseAnswerRadio();
Thread.sleep(1000);
}
submitpage();
hand_ok();
clickAllAnalysis();
}
/**
* 申论做试卷
*
* @throws InterruptedException
*/
@SuppressWarnings("unchecked")
@Test
public void sldoExam(HashMap<String, Object> data) throws InterruptedException {
Log.logInfo("申论做试卷 action");
appdriver.manage().timeouts().implicitlyWait(15,TimeUnit.SECONDS);
intofirstpage();
Thread.sleep(3000);
clickSL();
chooseSLSJ();
Thread.sleep(1000);
startSL();
inputAnswer();
downmoveToleft();
finishanswer();
clickAnswerCard();
submitandjiexisl();
hand_ok();
backPaperList();
List<WebElement> viewnum = appdriver.findElements(paper.viewnum);
Number = viewnum.size();
Number=(Number-1);
}
/**
* 行测做试卷校验
* @throws InterruptedException
*/
public boolean VerificationxcdoExam(HashMap<String, Object> data) throws InterruptedException {
String ExpectName = MapUtil.getValue("Expect", data);
for (int i = 0; i < 4; i++) {
swipeToUp(1000);
Thread.sleep(1000);
}
WebElement tv_analysis_des = appdriver
.findElement(paper.tv_analysis_des);
System.out.println("tv_analysis_des.getText======="
+ tv_analysis_des.getText()); //验证是否存在解析
if (tv_analysis_des.getText().contains(ExpectName))
{
for (int i = 0; i < 2; i++) {
pressReturnKey();
Thread.sleep(1000);
}
return true;
}
else {
return false;
}
}
/**
* 申论做试卷校验
* @throws InterruptedException
*/
public boolean VerificationsldoExam(HashMap<String, Object> data) throws InterruptedException {
for (int i = 0; i < 5; i++) {
moveToDown();
Thread.sleep(20000);
}
List<WebElement> viewnum = appdriver.findElements(paper.viewnum);
if(viewnum.size()==(Number)){ //listview [批改中]消失了
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