使用AndroidDriver/IOSDriver对象的getContextHandles()方法得到所有上下文句柄,其中原生app的句柄会有"NATIVE_APP"字样,webview句柄会有"WEBVIEW"字样。

确定了webview句柄后,使用对象的context()方法进入webview,如果想返回原生app,使用context()方法,传入原生app句柄即可。

然后再通过定位方法定位元素。

安卓4.4之前,需要使用Selendroid,具体代码如下(摘自Appium API文档 https://testerhome.com/topics/3144):

 1 //配置 webdriver 并启动 webview 应用。
 2 DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
 3 desiredCapabilities.setCapability("device", "Selendroid");
 4 desiredCapabilities.setCapability("app", "/path/to/some.apk");
 5 URL url = new URL("http://127.0.0.1:4723/wd/hub");
 6 RemoteWebDriver remoteWebDriver = new RemoteWebDriver(url, desiredCapabilities);
 7
 8 // 切换到最新的web视图
 9 remoteWebDriver.switchTo().window("WEBVIEW");
10
11 //在 guinea-pig 页面用 id 和 元素交互。
12 WebElement div = remoteWebDriver.findElement(By.id("i_am_an_id"));
13 Assert.assertEquals("I am a div", div.getText()); //验证得到的文本是否正确。
14 remoteWebDriver.findElement(By.id("comments")).sendKeys("My comment"); //填写评论。
15
16 //离开 webview,回到原生应用。
17 remoteWebDriver.switchTo().window("NATIVE_APP");
18
19 //关闭应用。
20 remoteWebDriver.quit();

转载于:https://www.cnblogs.com/test-researcher/p/6676686.html

appium定位WebView页面元素相关推荐

  1. Appium 自动化测试 H5页面元素定位

    简介   在现在的移动端App中,由于开发效率.需求频繁变更的需求情况下,经常有相关的运营需求,经常要进行更新,如果全部采用原生开发,需要的成本比较高,后来就出现了内嵌的H5页面.那么这些H5页面元素 ...

  2. python+selenium利用在线代码转换工具,批量定位百度页面元素https://www.sojson.com/jshtml.html(附操作步骤)

    一.定位一组元素如下图 二.选择copy element复制页面元素 <div id="u1"><a href="http://news.baidu.c ...

  3. cypress之实现文件上传下载以及操作iframe下页面元素

    前面讲解了使用cypress框架如何定位.操作页面元素以及校验测试结果,此次课程将介绍如何实现文件上传.操作iframe下面的页面原因以及操作shadow dom下的页面元素.为了完成此次课程目标,拆 ...

  4. Webview页面的控件元素定位

    前言 现在有很多App都是Hybrid的,即有原生的页面又有Webview的页面,元素的可以通过uiautomatorviewer工具 进行控件元素的定位,Webview页面的则无法通过此方式定位,而 ...

  5. APP UI 自动化测试 H5页面元素定位

    使用 uc-devtools 代替 uiautomatorviewer 查找定位H5元素 由于uiautomatorviewer 只能定位APP原生页面: 所以要定位app H5 页面内的元素 使用 ...

  6. Appium定位元素的几种方法总结

    目录 前言 1. 通过id定位 2. 通过className定位 3. 通过AccessibilityId定位 4. 通过xpath定位 4.1 常规定位 4.2 contains模糊定位 4.3 组 ...

  7. appium定位元素java篇【转】

    1.关于没有name,没有ID的元素的定位---通用篇 解题思路: 因为没有name,id:其实剩下的选择已不多,要么xpath,要么className.xpath木有好印象(稳定性不高,加之1.0x ...

  8. Appinum:在使用安卓模拟器定位页面元素时启动uiautomatorviewer.bat ,但是报错: Error while obtaining UI hierarchy XML file: c

    在使用安卓模拟器定位页面元素时启动uiautomatorviewer.bat ,但是报错: Error while obtaining UI hierarchy XML file: com.andro ...

  9. css定位页面元素,页面元素定位-CSS元素基本定位

    基本定位 """属性定位 一 """ # #通过id # driver.find_element_by_css_selector(" ...

最新文章

  1. mysql len s.number,mysql内置函数
  2. 【安全漏洞】简要分析复现了最近的ProxyShell利用链
  3. 我与Python网络爬虫的第一次接触
  4. DM9000调试记录
  5. 大疆无人机高程不准_大疆消费级无人机快速倾斜摄影测量实践
  6. java框架讲解ppt_经典框架spring介绍课件.ppt
  7. PHP商城数据库安全事务处理方法
  8. 6000字讲透!特适合产品新人的成长指南(附成长路径图)
  9. 谷歌在外贸中的实战解析
  10. 借助URLOS快速安装织梦cms
  11. 教你如何获得win7候选发布版序列号及下载
  12. WORD导出PDF生成书签
  13. 面经——华为联发科小米兆易创新(2020年秋招嵌入式软件)
  14. ps换背景操作,巨简单
  15. 留言赠书|GitHub收获1W星标《迁移学习导论》重新整理升级
  16. 关于三菱触摸屏GT Designer3 仿真软件创建工程
  17. KITTI数据集-百度云盘
  18. 【ML】_00_03_梯度下降
  19. iOS小知识:如何使用教育商店购买Apple M1 Max
  20. iPhone / iPad iOS 5.0.1完美 越狱 教程 A4/A5处理器

热门文章

  1. java 转xml 变成两根下划线_XStream实现xml和java对象之间的互相转换(包括对属性,别名,下划线_的处理),同理JSON也可以...
  2. 小米手机60帧录屏_手机录屏怎样只录手机内部声音不录入外部声音?教你三种方法,一定能帮到你...
  3. 无线抄表免费透传云服务器,两个WIFI模块USR-WIFI232-B2连接有人云实现远程一对一透传...
  4. mysql 重置更新祖级字段
  5. vue自定义指令封装节流_Vue自定义指令封装节流函数的方法示例
  6. matlab操作入门实验报告,matlab操作实验报告
  7. 浙江师范计算机考研怎么样,浙江师范大学考研难吗?一般要什么水平才可以进入?...
  8. python的特殊类_python - 类的特殊成员方法
  9. docker logs 日志原理
  10. Apache Flink 零基础入门(四)Flink开发批处理应用程序