Appium定位android WebView中的元素

Android APP中,若存在WebView来加载H5页面,使用appium进行元素定位时,需将webdriver的context切换成webview的context,此时才能正常的获取H5中元素,步骤参考如下:

  1.需原生APP中,增加如下代码(Application中即可):

WebView.setWebContentsDebuggingEnabled(true)

  2.此时启动webdriver,调用.contexts方法获得context list,打印的结果中会出现WEBVIEW_xxxxxxx的元素,这个元素即为webview的context,若无步骤1中设置项,打印中只有NATIVE_APP的元素;

cts = driver.contexts
  print(cts)
  >>>>>>['NATIVE_APP', 'WEBVIEW_xxxx'] 

3.webdriver对象调用.switch_to.context("WEBVIEW_xxxx")方法,切换到webview的context,调用.current_context方法,可以看到打印"WEBVIEW_xxxx";

 ct = driver.current_context
  print("current context is :" + ct)
  >>>>>>WEBVIEW_xxxx

4.若调用.switch_to.context("WEBVIEW_xxxx")方法报类似以下错误,No Chromedriver found that can automate Chrome 'xx.xx.xx',此报错是因为Appium在运行过程中找不到安卓设备系统中自带Webview的chrome版本所对应版本的Chromedriver,导致了报错。

  我们需要找到与安卓系统中webview对应的chromedriver版本并更新到appium的安装目录中。

  步骤如下:

  1)手机(USB)链接电脑后,切换到含有webview的页面

  2)打开电脑浏览器,浏览器中输入chrome://inspect/#devices,

  3)页面中会提示如图所示信息

此时可以看到当前手机的chromedriver版本为81.0.4404.71

  4)然后点击Chromedriver下载地址:ChromeDriver仓库 ,下载最新的81.0.4404.xxx的版本即可。(81.0.4404.xx可能找不到,下载81.0.4404这个版本最新的就行)

  5)下载下来后解压拿到文件chromedriver.exe文件,将该文件添加/替换到appium的安装目录下的\resources\app\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win,可能原目录中不存在chromedriver\win这两层目录,需手动创建。

  6)经上述步骤后即可运行成功。

  5.再次运行python脚本,可以使用常规定位方式如classname来定位元素,

  code:

  h5中定义div标签为rg_form,此时可以通过如下方式来定位:

driver.find_element(AppiumBy.CLASS_NAME, 'rg_form')

  h5中定义input标签id为password,此时可以通过如下方式来定位:

driver.find_element(AppiumBy.ID, "password")

 

 6.若步骤5在定位元素发生错误,提示类似InvalidArgumentException: Message: invalid argument: invalid locator,则尝试在webdriver的启动方式中增加如下参数:

desired_caps["chromeOptions"] = {'w3c': False}
  desired_caps["showChromedriverLog"] = True

 

7.若想再切回原生app的context,只需webdriver对象调用.switch_to.context("NATIVE_APP")方法进行切换即可。

  其他:

  若android项目集成mpaas框架,直接运行debug版本的app或者运行带签名的debug包,就能获得WEBVIEW_xxxxxxx的context。

​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:485187702【暗号:csdn11】

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

  • 18
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值