美文网首页Appium自动化测试Appium
Appium-context切换问题排查(以微信为例)

Appium-context切换问题排查(以微信为例)

作者: 夜尽雪舞 | 来源:发表于2020-02-23 11:11 被阅读0次

为了更方便地进行微信小程序的测试,笔者希望能够切换进webview进行操作,事件过程中问题特别多一踩一个坑,特此记录以方便大家共同进步

1)Android版本8.0以上机型get contexts得到webview_undefinded

打开D:\appium\node_modules\appium-android-driver\build\lib\webview-helpers.js

修改adb.shell('ps')为adb.shell(['ps','-A']),8.0以下不需要修改

如果使用的是desktop,那文件在C:\Program Files\Appium\resources\app\node_modules\appium\node_modules\appium-android-driver\build\lib文件夹下

图-1

修改之后成功获取到

图-2

2)switch_context到WEBVIEW_com.tencent.mm:tools卡住

解决方法:Step1:添加启动参数,${chromeOptions} = {'androidProcess': 'com.tencent.mm:tools'}

                  Step2:降低微信版本到6.7.3,后来升上去又没问题了,具体原因不清楚

做了两项修改之后切换成功

图-3

然而自动化之路并未成功,笔者又踩了一个坑,真的是崩溃啊~~~,下面讲第三个坑

3)click element提示无法定位到元素,可是元素就在那里~

图-4

使用log_source打印出当前页面代码之后,确实不是显示的这个页面

解决办法:switch_context之后需要再切换window_handles,使用robotframework的同学将

_applicationmanagement.py里面switch_to_context的代码修改如下,切换万context之后选中最后

一个handle。同程旅游APP还在使用X5内核时与此恰好相反,需要选择第一个handle,所以不同

APP可能有所不同,读者自行排查

图-5

修改之后重新启动robotframework,再次运行

查看页面代码,发现页面已经切换正确,click_element执行成功

图-6

4)然而click_element执行成功但是click时间并未生效

尝试使用executescript解决问题,结果提示$ is not defined,与chrome内核不同webview有可能executescript并能不支持执行JS。

图-7

推测该元素可能绑定的时Tap事件,使用Tap进行操作。

图-8

结果报错:NoSuchElementException: Message: An element could not be located on the page using the given search parameters

解决方案参照下面连接:

https://www.cnblogs.com/LY-CC/articles/10924469.html

最后换了一种写法,点击成功,具体原因完全不知道

图-9

5)与Chome内核不同,在webview中截图,就是会卡死的

解决方案:切换为原生状态进行截图,截图成功之后再切回响应webview

修改Rotbotframework的_screenshot.py文件中capture_page_screenshot方法

图-10

修改成功之后,利用原生状态切图成功

图-11

6)switch-contexe时切到了Chrome上去了,因为安装了chrome,程序检测到com.android.chrome会优先获取chrome的版本,卸载Chrome即可

图-12

7)起初执行没问题,升级微信之后无法点击元素

图-13

不同版本微信元素id不一样

例如微信的搜索框

6.7.3版本中 id=com.tencent.mm:id/ji

7.0.6中id=com.tencent.mm:id/li

相关文章

网友评论

    本文标题:Appium-context切换问题排查(以微信为例)

    本文链接:https://www.haomeiwen.com/subject/tbgdqhtx.html