文档章节

转-Appium—处理混合APP中H5的操作

o
 osc_z1hvg4cu
发布于 2018/04/24 16:40
字数 685
阅读 22
收藏 0

精选30+云产品,助力企业轻松上云!>>>

 

常规方法

正常来说,常规的方法应该是使用UI Automator Viewer来探测页面的元素,比如下面这样:

页面元素

但是,如果是混合开发,就会出现只有一个webview元素的情况,正常的方法无法定位。比如这样: 
webview

常规的方法是没办法定位出这部分内容,只有一个webview,无法像原生一样获取内容。

取巧的办法

如果针对H5的元素,只需要点击的话,可以这么做,比如上文我们的开户页面,我们需要做的只是在这个页面上点击立即开户,跳转到下一个页面,我们可以用这种取巧的方法:

1.self.driver.get_name('立即开户').click()

这样的代码,也是可以实现的,当然,上面的get_name我是进行封装了的,原来的代码是:

1.def get_name(self, name):
2.element = self.driver.find_element_by_name(name)
3.return element

更优化的处理方式

既然是H5页面,如果能够获取HTML代码就好了,那么就可以使用操作DOM的方式来操作这个H5。


谷歌浏览器:版本 49.0.2623.87 (64-bit)


我用的谷歌浏览器是这个版本,把手机连接上电脑,在谷歌浏览器中输入这个代码:

1.chrome://inspect

点击这个按钮:

inspect

神奇的一幕出现了,所有的代码都展示在你面前。就像web一样调试混合APP中的H5.

切换webdriver

虽然解决了html代码的问题,但是另一个问题出现了,我们要怎么去操作DOM。常规的方法是没办法了,只能操作原生的,这个时候我们需要把webdriver切换成H5的,而不是原生的。

其实原理很简单,只要把webdriver切换到H5的方式就行了。使用如下代码:

contexts
contexts(self):
  Returns the contexts within the current session.
  返回当前会话中的上下文,使用后可以识别H5页面的控件
:Usage: driver.contexts 用法 driver.contexts

调用这个方法后,把结果打印出来,你会发现是一个列表,列表中的第一个是NATIVE_APP,这个就表示现在的webdriver是调用原生的功能,我们使用这个命令切换一下就行了。

def switch_h5(self):
        self.driver.execute(MobileCommand.SWITCH_TO_CONTEXT, {"name": "WEBVIEW_com.weizq"}) def switch_app(self): self.driver.execute(MobileCommand.SWITCH_TO_CONTEXT, {"name": "NATIVE_APP"})

第一个函数就是封装切换到H5的方法,name对应的东西就是通过contexts列表中打印出来的东西,当然你也可以使用其他的方法封装。

切换到H5的webdriver之后,再使用driver.find_element_by_id试试?现在就变成查找DOM相关的功能了,再调用第二个函数,又切回原生的webdriver了。

上一篇: 转-Appium实战
下一篇: Arduino抢答器
o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
Appium Inspector定位Webview/H5页面元素

[toc] Appium在操作混合App或Android App的H5页面时, 常常需要定位H5页面中的元素, 传统方式是 翻墙 + 使用Chrome://inspect来定位元素, 环境准备相当繁琐, 不仅需要想办法翻墙, 而且还需要A...

osc_isezqdgg
2019/09/17
4
0
<自动化测试方案_8>第八章、手机端UI自动化测试

第八章、手机端UI自动化测试 (一)APP测试分类 1,原生APP:Native页面是使用原生系统内核的,相当于直接在系统上操作 2,H5APP:先调用系统的浏览器内核,相当于是在网页中进行操作,较原生...

osc_scfa0qz4
2018/08/22
5
0
使用appium自动化测试混合应用app(android内嵌套h5表单界面),请问怎么准确控制表单页上滑幅度操作?

使用appium自动化测试混合应用app(android内嵌套h5表单界面),请问怎么准确控制表单页上滑幅度操作? 环境: appium的版本: 1.8.1 测试用例开发语言:java 文档上面给的上滑操作提示是采用...

streamlong
2018/07/04
1K
0
H5 元素定位

app开发三种模式:native h5 hybird(混合) 针对不同场景使用不同的定位方式,android原生控件,web是bs架构,两者在不同环境下运行,此需要进行上下文context切换,然后对h5页面元素定位操作...

osc_2g1pfov3
2019/11/27
1
0
自动化测试_移动端测试(二)—— Appium原理

一、什么是Appium Appium是一个开源、跨平台的测试框架,可以用来测试原生及混合的移动端应用。Appium支持IOS、Android及FirefoxOS平台。Appium使用WebDriver的json wire协议,来驱动Apple系...

osc_adbdgnsp
2018/05/18
4
0

没有更多内容

加载失败,请刷新页面

加载更多

Eclipse_JavaEE_Tomcat_MySQL环境配置

安装java环境,配置系统变量(JAVA_HOME,绝对路径) 下载eclipse+Tomcat+mysql window——》preference——》server——》runtime——》tomcat环境 项目右键build path 配mysql jar ,libra...

愿有时光可回首
57分钟前
20
0
MySQL原理 - InnoDB引擎 - 行记录存储 - Redundant行格式

本文基于 MySQL 8 在上一篇:MySQL原理 - InnoDB引擎 - 行记录存储 - Compact格式 中,我们介绍了什么是 InnoDB 行记录存储以及 Compact 行格式,在这一篇中,我们继续介绍其他三种行格式。 ...

zhxhash
今天
29
0
leetcode面试题 17.13(恢复空格)--Java语言实现

求: 哦,不!你不小心把一个长篇文章中的空格、标点都删掉了,并且大写也弄成了小写。像句子"I reset the computer. It still didn’t boot!"已经变成了"iresetthecomputeritstilldidntboo...

拓拔北海
今天
19
0
B站跨年晚会究竟做对了什么?

燃财经(ID:rancaijing)原创 作者 | 赵磊 编辑 | 周昶帆 “补课”是《bilibili晚会 二零一九最美的夜》这个视频中,观众在前两分钟刷得最多的弹幕,寓意着观众是在元旦之后回来补看跨年晚会...

子乾建建_Jeff
01/07
59
0
关于Scrapy爬虫项目运行和调试的小技巧(上篇)

点击上方“Python爬虫与数据挖掘”,进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 迟日江山丽,春风花草香。泥融飞燕子,沙暖睡鸳鸯。 扫除运行Scrapy爬虫程序...

yuhan336
04/02
26
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部