Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
webappauto
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Li Yongyu
webappauto
Commits
de18a26f
Commit
de18a26f
authored
Jul 08, 2019
by
Li Yongyu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add mock and banner 、
parent
ac2c81c7
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
1097 additions
and
131 deletions
+1097
-131
apptest.xls
appWebAuto/appWebAuto/TestData/apptest.xls
+0
-0
estimateAction.java
...cn/ys/appWebAuto/app/tiku/pagesAction/estimateAction.java
+0
-0
exerciseBookAction.java
...s/appWebAuto/app/tiku/pagesAction/exerciseBookAction.java
+73
-51
firstPageAction.java
...n/ys/appWebAuto/app/tiku/pagesAction/firstPageAction.java
+1
-1
loginAction.java
...offcn/ys/appWebAuto/app/tiku/pagesAction/loginAction.java
+67
-51
mockAction.java
.../offcn/ys/appWebAuto/app/tiku/pagesAction/mockAction.java
+17
-17
packageAction.java
...fcn/ys/appWebAuto/app/tiku/pagesAction/packageAction.java
+181
-0
paperAction.java
...offcn/ys/appWebAuto/app/tiku/pagesAction/paperAction.java
+0
-0
estimateFunction.java
...s/appWebAuto/app/tiku/pagesFunction/estimateFunction.java
+58
-0
packageFunction.java
...ys/appWebAuto/app/tiku/pagesFunction/packageFunction.java
+55
-0
paperFunction.java
...n/ys/appWebAuto/app/tiku/pagesFunction/paperFunction.java
+58
-0
Estimate.java
...java/com/offcn/ys/appWebAuto/app/tiku/pagse/Estimate.java
+88
-0
exerciseBook.java
.../com/offcn/ys/appWebAuto/app/tiku/pagse/exerciseBook.java
+6
-5
paper.java
...in/java/com/offcn/ys/appWebAuto/app/tiku/pagse/paper.java
+71
-0
studypackage.java
.../com/offcn/ys/appWebAuto/app/tiku/pagse/studypackage.java
+28
-0
db_cases.java
...java/com/offcn/ys/appWebAuto/frame/Database/db_cases.java
+32
-0
CutImage.java
...main/java/com/offcn/ys/appWebAuto/frame/pub/CutImage.java
+3
-3
CutImagenew.java
...n/java/com/offcn/ys/appWebAuto/frame/pub/CutImagenew.java
+131
-0
OCR.java
.../src/main/java/com/offcn/ys/appWebAuto/frame/pub/OCR.java
+1
-1
xiangsidu.java
...ain/java/com/offcn/ys/appWebAuto/frame/pub/xiangsidu.java
+149
-0
WebAppframe.java
...bAuto/src/test/java/com/offcn/appWebAuto/WebAppframe.java
+7
-2
TEST-com.offcn.ys.appWebAuto.app.tiku.pagesAction.paperAction.xml
....offcn.ys.appWebAuto.app.tiku.pagesAction.paperAction.xml
+66
-0
TEST-com.offcn.ys.appWebAuto.frame.Database.db_cases.xml
.../TEST-com.offcn.ys.appWebAuto.frame.Database.db_cases.xml
+5
-0
No files found.
appWebAuto/appWebAuto/TestData/apptest.xls
View file @
de18a26f
No preview for this file type
appWebAuto/appWebAuto/src/main/java/com/offcn/ys/appWebAuto/app/tiku/pagesAction/estimateAction.java
0 → 100644
View file @
de18a26f
This diff is collapsed.
Click to expand it.
appWebAuto/appWebAuto/src/main/java/com/offcn/ys/appWebAuto/app/tiku/pagesAction/exerciseBookAction.java
View file @
de18a26f
...
...
@@ -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
choose
second_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);
clickth
ird_view
.
click
()
;
clickth
ree_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
();
c
hooseAnswer
();
back
.
click
();
c
lickRestudy
();
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
{
...
...
appWebAuto/appWebAuto/src/main/java/com/offcn/ys/appWebAuto/app/tiku/pagesAction/firstPageAction.java
View file @
de18a26f
...
...
@@ -99,7 +99,7 @@ public class firstPageAction {
}
/**
* 验证
添加联系人
* 验证
返回首页
*/
public
boolean
Verificationexercisebackfirstpage
(
HashMap
<
String
,
Object
>
data
)
{
...
...
appWebAuto/appWebAuto/src/main/java/com/offcn/ys/appWebAuto/app/tiku/pagesAction/loginAction.java
View file @
de18a26f
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
=
"1
391"
+(
new
Random
().
nextInt
(
9000000
)
+
1000000
);
//
phone = MapUtil.getParameter(parameter, "username").trim();
phone
=
"1
498"
+
(
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{
}
}
/**
* 验证注册
*/
...
...
appWebAuto/appWebAuto/src/main/java/com/offcn/ys/appWebAuto/app/tiku/pagesAction/mockAction.java
View file @
de18a26f
...
...
@@ -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
)
{
...
...
appWebAuto/appWebAuto/src/main/java/com/offcn/ys/appWebAuto/app/tiku/pagesAction/packageAction.java
0 → 100644
View file @
de18a26f
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
;
}
}
}
appWebAuto/appWebAuto/src/main/java/com/offcn/ys/appWebAuto/app/tiku/pagesAction/paperAction.java
0 → 100644
View file @
de18a26f
This diff is collapsed.
Click to expand it.
appWebAuto/appWebAuto/src/main/java/com/offcn/ys/appWebAuto/app/tiku/pagesFunction/estimateFunction.java
0 → 100644
View file @
de18a26f
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
;
}
}
appWebAuto/appWebAuto/src/main/java/com/offcn/ys/appWebAuto/app/tiku/pagesFunction/packageFunction.java
0 → 100644
View file @
de18a26f
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
;
}
}
appWebAuto/appWebAuto/src/main/java/com/offcn/ys/appWebAuto/app/tiku/pagesFunction/paperFunction.java
0 → 100644
View file @
de18a26f
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
;
}
}
appWebAuto/appWebAuto/src/main/java/com/offcn/ys/appWebAuto/app/tiku/pagse/Estimate.java
0 → 100644
View file @
de18a26f
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"
);
}
appWebAuto/appWebAuto/src/main/java/com/offcn/ys/appWebAuto/app/tiku/pagse/exerciseBook.java
View file @
de18a26f
...
...
@@ -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"
);
//交卷
...
...
appWebAuto/appWebAuto/src/main/java/com/offcn/ys/appWebAuto/app/tiku/pagse/paper.java
0 → 100644
View file @
de18a26f
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"
);
}
appWebAuto/appWebAuto/src/main/java/com/offcn/ys/appWebAuto/app/tiku/pagse/studypackage.java
0 → 100644
View file @
de18a26f
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"
);
}
appWebAuto/appWebAuto/src/main/java/com/offcn/ys/appWebAuto/frame/Database/db_cases.java
0 → 100644
View file @
de18a26f
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! "
);
}
}
}
appWebAuto/appWebAuto/src/main/java/com/offcn/ys/appWebAuto/frame/pub/CutImage.java
View file @
de18a26f
...
...
@@ -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
,
192
0
);
cutImage
(
"d:\\
3.png"
,
"d:\\copy.png"
,
0
,
200
,
1080
,
80
0
);
}
/**
...
...
@@ -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拍照
...
...
appWebAuto/appWebAuto/src/main/java/com/offcn/ys/appWebAuto/frame/pub/CutImagenew.java
0 → 100644
View file @
de18a26f
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
));
}
}
}
appWebAuto/appWebAuto/src/main/java/com/offcn/ys/appWebAuto/frame/
tools
/OCR.java
→
appWebAuto/appWebAuto/src/main/java/com/offcn/ys/appWebAuto/frame/
pub
/OCR.java
View file @
de18a26f
package
com
.
offcn
.
ys
.
appWebAuto
.
frame
.
tools
;
package
com
.
offcn
.
ys
.
appWebAuto
.
frame
.
pub
;
import
java.io.File
;
import
net.sourceforge.tess4j.ITesseract
;
...
...
appWebAuto/appWebAuto/src/main/java/com/offcn/ys/appWebAuto/frame/pub/xiangsidu.java
0 → 100644
View file @
de18a26f
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
appWebAuto/appWebAuto/src/test/java/com/offcn/appWebAuto/WebAppframe.java
View file @
de18a26f
...
...
@@ -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();
}
}
appWebAuto/appWebAuto/test-output/junitreports/TEST-com.offcn.ys.appWebAuto.app.tiku.pagesAction.paperAction.xml
0 → 100644
View file @
de18a26f
<?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 -->
appWebAuto/appWebAuto/test-output/junitreports/TEST-com.offcn.ys.appWebAuto.frame.Database.db_cases.xml
0 → 100644
View file @
de18a26f
<?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 -->
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment