Appium基础五:appium相关API
1.获取信息类:
1.1 获取当前界面的组件:
driver.currentActivity(); //获取当前界面的activity,可用于断言是否跳转到预期的activity
1.2 获取当前页面的树形结构源代码
driver.pagesource(); //获取当前页面的树状结构图
2.App安装与卸载相关类API
2.1 判断APP是否安装
driver.isAppInstalled("package name"); //判断应用是否已安装
driver.installApp(appPath); //安装APP
driver.removeApp(StringbundleId); //卸载包,Android中是包名,IOS是bundleId
driver.closeApp(); //关闭应用,按住Home键把应用退到后台
driver.launchApp(); //启动应用
driver.resetApp(); //先close再launch
2.2 启动其他应用:
driver.startActivity("com.android.camera", ".CameraLauncher");
3.设置相关类:
3.1 获取和设置网络状态
int status = driver.getNetworkConnection().value; //获取网络状态
System.out.println(status);
driver.setNetworkConnection(new NetworkConnectionSetting(status)); //设置网络状态
//或者
driver.setNetworkConnection(new NetworkConnectionSetting(false, true, false));
4.文件操作类:
4.1.push文件、pull文件
File file = new File("d:\\test.txt"); //test.txt内容为"test"
String content = null;
try {
content = FileUtils.readFileToString(file);
} catch (IOException e) {
e.printStackTrace();
}
byte[] data = Base64.encodeBase64(content.getBytes());
driver.pushFile("sdcard/test.txt", data);
byte[] resultDate = driver.pullFile("sdcard/test.txt");
System.out.println(new String(Base64.decodeBase64(resultDate))); //打印结果为"test"
5.获取控件类(获取多个元素只需要将findElement改成findElements即可):
5.1通过元素id查找当前页面的目标元素:
driver.findElementById("id"); //通过id定位元素
5.2 通过元素name查找当前页面的目标元素:
driver.findElementByClassName("classname"); //通过name定位元素
5.3 通过元素Xpath查找当前页面的目标元素:
driver.findElementByXpath("xpath"); //通过xpath定位元素
5.4 通过元素的name值定位(也就是text)
driver.findElementByName("name"); //通过text值定位
5.5 混合定位,通过Xpath和index等联合定位
driver.find_element_by_xpath("//android.widget.TextView[contains(@text,'图库')]") //在页面检测所有的android.widget.TextView类中含有text="图库"的元素
6.用户操作类:
6.1 点击事件:
1)driver.click();
2)driver.tap(position.duration); //模拟手指点击,可设置按住时间长度(ms)
如:driver.tap([(300,500)],10)
6.2 摇一摇手机
1)driver.shake()
6.3 输入事件
1)driver.elememt.sendKeys();
2)driver.elememt.sendText();
6.4 滑动屏幕(翻屏和快速移动):
driver.swipe(startX,startY, endX,endY, during(ms));//将屏屏幕从(startX,startY)滑动到(endX,endY)间隔during(ms)
driver.flick(startX,startY,endX,endY) //按住A(startX,startY)点快速移动到B(endX,endY)点
6.5 缩放事件(适合测试类似有运动地图的场景):
1)driver.pinch(element,percent,steps); //在元素上执行缩小操作,percent和steps可不写,当不写时表示默认
如:driver.pinch(element,150,30)
2)driver.zoom(element,percent,steps); //在元素上执行放大操作,percent和steps可不写,当不写时表示默认
如:driver.zoom(element,200,50)
6.6 长按事件:
1)driver.longPress();
6.7 Keyevent事件
driver.keyevent("4") #返回键操作
6.8 打开和关闭操作:
driver.close() //关闭当前窗口
driver.quit() //退出脚本运行并关闭每个相关的窗口连接
6.9 获取窗口的高和宽
driver.manage().window().getSize().width;
driver.manage().window().getSize().height;
7.等待Wait相关类;
7.1 sleep方法:
Thread.sleep(60000) 强制等待60s //强制等待60s
7.2 implicitlyWait方法
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); //隐式等待,全局等待30S不管元素是u否已经加载
7.3 WebDriverWait方法(显示等待,需增加一定等待时间,可通过WebDriverWait和util来决定)
7.4 waitActivity方法(隐式等待,需接受三个参数,Activity名称、timeout超出时间和检测时间间隔(S)):
driver.waitActivity("Activity",timeout(s),during(s));
8.AppiumDriver辅助类:
8.1 截屏并保存本地
public static void ScreenShot(AndroidDriver driver,String ScreenName){
String dir_name = System.getProperty("user.dir")+"\\"+"异常图片";
if(!(new File(dir_name).isDirectory())){
new File(dir_name).mkdir();
}
File screen = driver.getScreenshotAs(OutputType.FILE);
try{
System.out.println("异常图片保存路径:"+new File(dir_name));
FileUtils.copyFile(screen, new File(dir_name+"\\"+ScreenName+".jpg"));
}catch(Exception e){
e.printStackTrace();
}
}
8.2 打开通知栏界面:
driver.openNotifications();
8.3 锁屏:
driver.lockScreen(2);//锁屏
//判断是否锁屏
driver.isLocked();
8.4 自动滑动列表
driver.scrollTo("text"); //自动滑动列表
//或者
driver.scrollToExact("text");
Appium基础五:appium相关API的更多相关文章
- Appium基础:appium相关API
1.获取信息类: 1.1 获取当前界面的组件: driver.currentActivity(); //获取当前界面的activity,可用于断言是否跳转到预期的activity 1.2 获取当前页面 ...
- appium 基础二:常用api接口
一.获取手机分辨率 size=driver.get_window_size()#获取手机屏幕大小,分辨率 print(size)#{'width': 720, 'height': 1280} 得到的是 ...
- Appium基础一:Appium概念
1.Appium介绍: Appium是一款开源跨平台(IOS和Android平台)支持多种开发语言(java.python等)进行测试Native/Web/Hybrid的Android/iOS App ...
- Appium基础教程
目录 Appium教程 Appium简介 App自动化测试工具对比 Appium实现原理 环境搭建 Andorid介绍 基本架构 常见布局/视图 基本控件 控件常见属性 Adb介绍 Adb常用命令 A ...
- Appium基础——需要知道的
Appium使用平台厂商提供的自动化框架: 1.ios 苹果的UIAutomation 2.android google的UIAutomator Appium底层使用厂商提供的自动化框架,就不需要 ...
- 『与善仁』Appium基础 — 10、Appium基本原理
目录 1.Appium自动化测试架构 2.Appium架构图 3.Session说明 4.Desired Capabilities说明 5.Appium Server说明 6.Appium Clien ...
- 『与善仁』Appium基础 — 12、Appium的安装详解
目录 (一)Appium server安装 方式一:(桌面方式:推荐) 1.Appium Desktop下载 2.Appium Desktop安装 3.Appium Desktop使用 方式二:(No ...
- 『与善仁』Appium基础 — 14、Appium测试环境搭建
目录 1.Appium测试环境搭建整体思路 (1)Android测试环境搭建 (2)Appium测试环境搭建 (3)测试脚本语言的环境搭建 2.Appium在Android端和IOS端的工作流程 (1 ...
- Appium基础(二)demo
具体配置,请看上一篇 一.启动Android模拟 Start 打开如下界面:这个过程可能会有些慢,黑屏等等,请耐心等待 二.appium配置 1.点机器人图标 PlatformVersion 选19, ...
随机推荐
- zabbix3.2部署
原地址 http://blog.csdn.net/zk673820543/article/details/50680333 CentOS6.7zabbix3.0.0 1.基础软件包安装,采用yum ...
- Pmod使用的4种模式
引言 多年以来,一直存在标准泛滥的现象,而我们电子业尤其严重.您是否曾经想过,为什么我们对有些奇怪的数字或测量计的东西建立标准?关于航天飞机的固体燃料火箭推进器的直径是否真的源自于马屁股的宽度的讨论非 ...
- 深入浅出Javascript的正则表达式
深入浅出的javascript的正则表达式学习教程 阅读目录 了解正则表达式的方法 了解正则中的普通字符 了解正则中的方括号[]的含义 理解javascript中的元字符 RegExp特殊字符中的需要 ...
- poj3535 A+B (大数加法)
A+B Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 811 Accepted: 371 Description The ...
- C#API接口调试工具
自从去年软件界网站开发推崇前后端分离,我们公司也在进行转行行,从原先的前端架构,后端架构,数据库搭建一肩挑的模式也逐渐转型为前后端分离,大量招收前端开发人员,原来的人员也转型为专职的后端开发,这样的变 ...
- C++ BYTE、WORD与DWORD类型
在VS中,BYTE与WORD,DWORD本质上都是一种无符号整型,它们在WINDEF.H中被定义,定义如下: typedef unsigned char BYTE;typedef unsi ...
- php curl采集,服务器gzip压缩返回数据怎么办
一般服务器不会胡乱返回gzip压缩的数据,一般是客户端请求的头部里包含你浏览器能接受的压缩方式, Accept-Encoding:gzip,deflate,sdch 这里是gzip .deflat ...
- VM Fusion配置静态IP和物理机通讯
Vm虚拟机在WIndow系统上和物理机进行通讯很方便,但是在Mac上简直跟吃了屎一样难用的要死,物理机断了网以后还不能和虚拟机通讯, 如果在windows上做开发,也是简直和吃了屎一样,难用的要屎,这 ...
- NetCore + Mysql + EF:No coercion operator is defined between types 'System.Int16' and 'System.Boolean',
总结三种解决办法: 1.Mysql升级到7 2.Nuget安装Pomelo.EntityFrameworkCore.MySql 2.2.0替代MySql.Data.EntityFrameworkCor ...
- 源码分析(一) 进程cleos的命令解析
EOS版本:4.0 一.进程cleos的作用 cleos,即为client eos.从名字就可以猜出来,它是一个标准的客户端程序,而实际上,它也确实为一个标准的client^_^ 准确地说 ...