手机上 *** 作时,最常见的 *** 作就是滑动 *** 作,在app自动化测试时,可使用Swipe关键字,即将坐标由开始位置移到结束位置,即可实现屏幕下拉,使需要测试的元素可见
Arguments:[ start_x | start_y | offset_x | offset_y | duration=1000 ]
如果就简单的输入指定元素的坐标位置,遇到手机屏幕大小改变,或者参数更新,就得重新修改坐标,这无疑是件很麻烦的事情,所以采取小步快跑的方式,每次滑动一小段,然后循环,一直到出现了想要的元素才停止,基于该思路,在RF中封装关键字:
如果是向下滚动,纵坐标是从大到小,向上滚动,反之。
在我们日常使用App过程中,经常会看到App界面有一些d窗提示(如下图所示)这样的提示框称之为Toast提示框,这些提示元素出现后等待3秒左右就会自动消失,那么我们该如何获取这些元素文字内容呢?
Appium 163开始支持识别Toast内容,主要是基于UiAutomator2,
因此需要在Capablity配置如下参数:
desired_caps['automationName']='uiautomator2'
安装appium-uiautomator2-driver: 安装命令如下:
cnpm install appium-uiautomator2-driver
安装成功后可以在 C:\Users\XXXX\node_modules看到对应的文件:
进入登录界面输入错误的用户名或者密码,获取Toast内容:
注意:Toast内容为中文时,顶部必须注释# coding=utf-8 否则会因为编解码导致文字识别失败。
锁定解锁屏幕
driverlock(5)
将把当前应用放到后台 5 秒
driverbackground_app(5)
收起键盘
driverhide_keyboard()
启动 ACTIVITY
在当前应用中打开一个 activity 或者启动一个新应用并打开一个 activity 。 只能在 Android 上使用
driverstart_activity('comexampleandroidapis', 'Foo')
打开下拉通知栏 只能在 Android 上使用
driveropen_notifications()
检查应用是否已经安装
driveris_app_installed('comexampleandroidapis')
安装应用
driverinstall_app('path/to/myapk')
删除应用
driverremove_app('comexampleandroidapis')
摇晃 (SHAKE) 关闭应用
drivershake()
关闭应用
driverclose_app()
启动 (LAUNCH)
根据服务关键字 (desired capabilities) 启动会话 (session) 。请注意这必须在设定 autoLaunch=false 关键字时才能生效。这不是用于启动指定的 app/activities ————你可以使用 start_activity 做到这个效果————这是用来继续进行使用了 autoLaunch=false 关键字时的初始化 (Launch) 流程的
driverlaunch_app()
应用重置(相当于卸载重装应用)
driverreset()
列出所有的可用上下文 (CONTEXT)
context 可以理解为 可进入的窗口 。例如,对于原生应用,可用的 context 和默认 context 均为 NATIVE_APP
drivercontexts
列出当前上下文
drivercurrent_context
获取当前页面的源码(可以辅助元素定位)
driverpage_source
截图屏幕
driverget_screenshot_as_file(r'E:\img\img1png') # 截取整个屏幕
获取应用程序的字符串 (APP STRINGS)
driverapp_strings
给设备发送一个按键事件(KEY EVENT)(只限安卓)
driverkeyevent(176)
获取当前 activity。只能在 Android 上使用
drivercurrent_activity
模拟用户滑动(SWIPE)
driverswipe(start=75, starty=500, endx=75, endy=0, duration=800)
捏屏幕(PINCH) (双指往内移动来缩小屏幕)
driverpinch(element=el)
放大 (ZOOM)屏幕 (双指往外移动来放大屏幕)
driverzoom(element=el)
滑动 (SCROLL)到某个元素。从一个元素滚动到另一个元素
driverscroll(originalEl, destinationEl ) # originalEl - 要滚动的元素 destinationEl - 要滚动到的元素
设置元素的值
driverset_value(element=el,Val) # 设置 el 元素的值
推送文件到设备中去(PUSH FILE),推送文件需要转换为'base64'
获取/设置 appium 的服务器设置。
多个点点击(最多五个点)
drivertap([(100, 20), (100, 60), (100,100)], 500) # list 中的元组放 5 个点,500 表示按下 500ms
mWebViewsetWebViewClient(new WebViewClient(){ // 这个方法在用户试图点开页面上的某个链接时被调用 @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if(url!=null) { // 如果想继续加载目标页面则调用下面的语句 // viewloadUrl(url); // 如果不想那url就是目标网址,如果想获取目标网页的内容那你可以用>
添加JAVA_HOME变量,值:Jdk的安装路径,如:D:\Java\jdk170_45(只是例子,改成你的安装目录)添加CLASSPATH变量,值;%JAVA_HOME%\lib\toolsjar;%JAVA_HOME%\lib\dtjar修改path变量,加上这句%JAVA_HOME%\bin;检查JAVA环境是否配置好,进入CMD命令行,输入java或javac,可以看到好多的命令提示,说明成功了。
自动化测试不仅包括 *** 作流,还包括对 *** 作流结果的验证以及等待元素加载。
在实际应用中,我们常常会忽视页面跳转/加载等带来的延迟,这时去定位元素往往会报错,说定位不到这个元素。
这种情况我们就需要增加延迟,常用的方法有以下三种。
初学者最常用的sleep,这种方法使用简单,但添加多了之后程序运行效率低
效果:强制等待5秒
使用方法也比较简单,只需在开头设置一次即可,效率比强制等待高一点
效果:设置隐性等待5秒,当该driver要定位元素时马上去定位一次,如果定位不到则等待5秒再去尝试定位一次
这种方法笔者用的比较多,效率最高,程序运行比较流畅
需要先导入WebDriverWait类,并且在设置appium启动参数时添加参数'automationName': "UiAutomator2",
from seleniumwebdriversupportwait import WebDriverWait
效果:等待元素加载,默认每05秒去定位一次该元素,最多等待10秒,即如果该元素05秒就加载出来了,则只会等待05秒就会继续运行
我们通常将一个流程写成一个测试函数,而流程的最后往往伴随着提示消息,一般为toast消息,我们验证结果的惯用手法是抓取toast消息,验证是否正确。
这里也用到了上面的显性等待中的WebDriverWait
效果:等待页面上出现包括该条“toast消息”的元素,默认每05秒去查询一次,最多等待5秒
如果搜索的内容在页面上唯一,且没有报错,那就是成功找到该条消息,即流程成功执行。
如有错误请及时指出,谢谢!
如有问题请留言,我懂的必然会回复!
共勉。
以上就是关于Appium使用swipe滚动屏幕元素全部的内容,包括:Appium使用swipe滚动屏幕元素、Appium自动化之获取APP Toast(消息提示框)的信息、appium(四) *** 作介绍等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)