基于微信小程序的Appium-context切换问题排查

发表于:2020-2-24 10:48

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:佚名    来源:夜尽雪舞

  为了更方便地进行微信小程序的测试,笔者希望能够切换进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

     上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号