appium基础

本文详细介绍了Appium在自动化测试中的应用,包括选择和操作界面元素、adb命令、UI Automator API定位、滑动操作、WebView测试以及系统通知的处理。讲解了如何使用adb获取设备信息、安装应用、切换不同context进行WebView测试,并提供了处理滑动到底部的策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

appium自动化

1.选择界面元素

2.操作元素(点击,输入字符,拖曳,获取页面元素的各种属性)

3.根据获取到的数据进行分析处理

 

获取apk的启动activity

执行命令:   路径/aapt dump badging xxx.apk

在里面搜索: launchable-activity

 

如果sendkeys中要输入中文,descrip capbility中要加入这两行:

unicodeKeyborad --输入中文

resetKeyborad

 

--noReset = True 不清除应用数据

 

webdriver.Remote('...') --执行后创建一次会话, 下面的操作在driver.quit()前都在这个会话中。

 

http通信, 客户端歇菜后, 服务端不知道, 新的session到服务端后, 因为appium只支持一个session, 所以会报错。所以启动时要指定- --session-override

 

ADB命令

1. 是一个通用命令行工具

2. 与模拟器或真机进行通信

3. 进行各种设备操作,如安装,调试应用, 提供对设备上的shell访问

3. appium对android的自动化非常依赖这个工具,用这个工具获取设备信息,传送文件到手机,安装APK,启动某些应用程序等 。

 

ADB包含三部分:

1.客户端, 即命令本身

2.服务器 敲adb时就会启动服务,绑定5037端口

3. 后台服务器,运行到andriod手机上

 

tap方法: 与click类似,都是点击界面,区别是tap是针对坐标,难以用通常的方法定位元素时使用

driver.tap([(x1,y1)],duration) --坐标是列表,可以同时支持5个。

 

id,xpath,class等方法都是通过UI Automator API封装的

 

UI Automator API定位

UI Automator测试框架提供了一组API来构建UI测试

利用UI Automator API,控制测试设备

UI Automator测试框架非常适合编写黑盒自动化测试

API就是库的编辑接口application programming interface

UiSelector类就是用来选择web元素的

 

根据text和className来查找

code = 'new UiSelector().text("").className("")' #这过滤条件还可以继续加,过滤条件没有顺序。

ele = driver.find_element_by_ui_automator(code)

new UiSelector()生成一个对象, 后面的.text .class是过滤条件

 

根据resouceId来查

根据childSelector和instance方法

 

new UiSelector.resouceId("").childSelector(new UiSelector.class("").instance(3)) //instance从0开始

元素的子元素 new UiSelector.resouceId("").childSelector

子元素过滤条件 new UiSelector.class("").instance(3)

 

instance是父节点的第几个实例

index 是指Node Detail 的index的值

childSelector不一定是直接子节点

 

滑动

Appium WebDriver的swipe方法

1. 直接查看,获取操作坐标

2. 先获取元素坐标,再分析操作坐标(更健壮)

location = ele.location() 左上角坐标 dict 有x,y 即 location['x'], location['y']

size1 = ele.size 宽,高(dict: 有width,height) size1['width'], size1['height']

 

操作不可见元素方法:1先滑动到其可见 2再操作该元素

获取全屏幕尺寸

screenSize = driver.get_window_size() #返回字典

screenW = screenSize['width']

screenH = screenSize['height']

 

滑动的时长到滑动效果有差距,滑动快的话, 一般翻的页面更多

 

WebView的测试

1. app修改编译

对WebView对象加入setWebContentDebuggingEnabled的调用

WebView的自动化测试

1. 如果WebView的内容不依赖于所在的app, 1.只是打开一个url, 2.直接用Chrome浏览器打开对应的网页, 3.使用手机模式就可以了。 

 

2. 如果WebView的内容依赖于所在App, 1. 通过chrome的远程调试功能 2. 打开chrome浏览器,地址栏输入 chrome://inspect

 

webview版本较老,有时没有显示inspect

 

Appium自动化WebView

appium中把所有的界面环境称之为 context

native部分的context的名字一般为NATIV_APP

webview部分的context则为WEBVIEW_XXX(XXX为应用包名)

查看当前有哪些context driver.context

而显示当前的context则是 driver.current_context

 

切换 driver.switch_to.context('WEBVIEW_XXX')

driver.switch_to.context('NATIVE_APP')

 

系统通知:

打开通知 driver.open_notifications()

查看通知内容, 将所有text都查找出来,再来找?

怎么从通知栏中返回应用 1, 上滑, 2 按返回键 driver.press_keycode(3)

 

怎么判断是否滑动到最后

1. 底部有固定元素 -- 找到这个元素, 就到底部了

2. 一点点翻动, 某一个元素的坐标位置, 前后翻动, 坐标不再变化。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值