java+appium+安卓模拟器实现app⾃动化Demo
⽹上有⽐较多相关教程,⾃⼰写⼀遍,加深下印象。
环境搭建
据说,很多⼈都被繁琐的环境搭建给吓到了。
是的,确实,繁琐。
node.j s
c m d输⼊node -v,出现下图说明成功。
JDK
c m d输⼊jav a -v er s ion,出现下图说明成功。
Androi d SDK
c m d输⼊adb,出现下图说明成功。
Appi um Desktop
/
M aven
c m d输⼊m v n -v er s ion,出现下图说明成功。
I ntel l i J I DEA
安卓模拟器
把A ndr oid S D K⽬录下\plat f or m-t ools的 e拷贝
打开N ox\bin⽬录
粘贴替换 e
打开模拟器
c m d输⼊adb c onnec t127.0.0.1:62001
再输⼊adb dev ic es
有道计算器
下载后,apk⽂件存放在某⽬录下即可。
将apk⽂件直接拖⼊安卓模拟器中。
⾄此,环境搭建完毕,共安装了8个程序。
实现步骤
打开I nt elliJ
创建m av en项⽬
点击ok后,复制下⾯代码到pom.x m中
<dependenc ies>
<dependenc y>
<gr oupI d>io.appium</gr oupI d>
<ar t if ac t I d>jav a-c lient</ar t if ac t I d>
<v er s ion>4.1.2</v er s ion>
</dependenc y>
<dependenc y>
<gr oupI d>or g.t es t ng</gr oupI d>
<ar t if ac t I d>t es t ng</ar t if ac t I d>
<v er s ion>6.14.2</v er s ion>
</dependenc y>
</dependenc ies>
复制粘贴下⾯代码
im por t or g.t es t ng.annot at ions.T es t;
idea开发安卓app教程im por t or g.t es t ng.annot at ions.B ef or eC las s;
im por t or g.t es t ng.annot at ions.A f t er C las s;
im por t io.appium.jav a_c lient.A ppium D r iv er;
im por t io.appium.jav a_c lient.andr oid.A ndr oidD r iv er;
im por t jav a.U R L;
im por t or g.openqa.s elenium.r em ot e.C apabilit y T y pe;
im por t or g.openqa.s elenium.r em ot e.D es ir edC apabilit ies;
public c las s A ppD em o {
pr iv at e A ppium D r iv er dr iv er;
@B ef or eC las s
public v oid s et up()t hr ow s E x c ept ion {
D es ir edC apabilit ies c ap =new D es ir edC apabilit ies();
c ap.s et C apabilit y(C apabilit y T y pe.B R O W S E R_N A M E,"");
c ap.s et C apabilit y("plat f or m N am e","A ndr oid");//指定测试平台
c ap.s et C apabilit y("dev ic eN am e","127.0.0.1:62001");//指定测试机的I D,通过adb命令`adb dev ic es`获取
c ap.s et C apabilit y("plat f or m V er s ion","5.1.1");
//将上⾯获取到的包名和A c t iv it y名设置为值
c ap.s et C apabilit y("appP ac k age","c om.y oudao.c alc ulat or");
c ap.s et C apabilit y("appA c t iv it y","c om.y oudao.c alc ulat or.ac t iv it ies.M ainA c t iv it y");
////A new s es s ion c ould not be c r eat ed的解决⽅法
//c ap.s et C apabilit y("appW ait A c t iv it y","c om.m eiz u.f ly m e.c alc ulat or.C alc ulat or");
////每次启动时覆盖s es s ion,否则第⼆次后运⾏会报错不能新建s es s ion
//c ap.s et C apabilit y("s es s ionO v er r ide",t r ue);
dr iv er=new A ndr oidD r iv er(new U R L("ht t p://127.0.0.1:4723/w d/hub"),c ap);
}
@T es t
public v oid plus()t hr ow s E x c ept ion {
T hr ead.s leep(3000);
int w idt h =dr iv er.m anage().w indow().get S iz e().w idt h;
int height=dr iv er.m anage().w indow().get S iz e().height;
int x0 =(int)(w idt h *0.8);//起始x坐标
int x1 =(int)(height*0.2);//终⽌x坐标
int y=(int)(height*0.5);//y坐标
f or(int i=0;i<5;i++){
dr iv er.s w ipe(x0,y,x1,y,500);
T hr ead.s leep(1000);
}
dr iv er.f indE lem ent B y I d("c om.y oudao.c alc ulat or:id/guide_but t on").c lic k();
f or(int i=0;i<6;i++){
dr iv er.f indE lem ent B y X P at h("//andr oid.w ebk it.W ebV iew[@t ex t='M at hbot E dit or']").c lic k();
T hr ead.s leep(1000);
}
S t r ing bt n_x pat h ="//*[@r es our c e-id='c om.y oudao.c alc ulat or:id/v iew_pager_k ey boar d']/andr oid.w idget.G r idV iew/andr oid.w idget.F r am eLay out[%d]/andr oid.w idge dr iv er.f indE lem ent B y X P at h(S t r ing.f or m at(bt n_x pat h,7)).c lic k();
dr iv er.f indE lem ent B y X P at h(S t r ing.f or m at(bt n_x pat h,10)).c lic k();
dr iv er.f indE lem ent B y X P at h(S t r ing.f or m at(bt n_x pat h,8)).c lic k();
T hr ead.s leep(3000);
}
@A f t er C las s
public v oid t ear D ow n()t hr ow s E x c ept ion {
dr iv er.quit();
}
}
⽂件右键r un
然后可以看到脚本在跑了
打开安卓模拟器
⼀会就看到
计算器app在⾃⼰动了!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。