【Appium】测试时遇到手机内嵌H5页面的切换问题

这篇具有很好参考价值的文章主要介绍了【Appium】测试时遇到手机内嵌H5页面的切换问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:H5页面简单理解就是在手机内嵌套了一些网页格式的信息,可以让手机的应用看起来更丰富一些。
而当手机内嵌H5页面时,常规的app定位方法就没法使用了,我们需要先切换到H5页面才能进行下一步的定位,那该怎么操作呢,详细如下:

目录

一、确认app中哪个页面使用了H5技术

二、配置H5页面对应的chrome驱动

🍓2.1、确认H5页面内置的chrome版本

🍓2.2、下载相匹配的chrome驱动版本

🍓2.3、将chrome驱动放到appium对应目录下

🍓2.4、注意事项

三、编写脚本进行H5页面的切换

🍓3.1、获取H5页面标签信息

🍓3.2、切换到H5页面

🍓3.3、H5页面元素定位

🍓3.4、退出H5页面返回手机端页面

🍓3.5、切换回手机app模式

🍓3.6、完整代码


一、确认app中哪个页面使用了H5技术

在测试app前,可以询问开发(开发是肯定清楚的),或者有没有什么说明文档。

本文以有道云笔记-->我的-->有道云协作企业版为例,如下图:

【Appium】测试时遇到手机内嵌H5页面的切换问题

二、配置H5页面对应的chrome驱动

🍓2.1、确认H5页面内置的chrome版本

1、首先在app内打开对应的H5页面,如下图

【Appium】测试时遇到手机内嵌H5页面的切换问题

2、打开chrome浏览器,在地址栏输入命令chrome://inspect/#devices,等待一会,即可获取对应的chrome版本号74.0.3729.186

 【Appium】测试时遇到手机内嵌H5页面的切换问题

🍓2.2、下载相匹配的chrome驱动版本

1、进入appium官网Using Chromedriver - Appium,点击Chromedriver/Chrome compatibility下的“Version Selection(版本选择)”,如下图,看不懂英文版的可将其翻译成中文。

注意:步骤仅针对于版本号高于73的。

【Appium】测试时遇到手机内嵌H5页面的切换问题

2、然后会跳转到版本选择的网页https://chromedriver.chromium.org/downloads/version-selection,同样先把网页翻译成中文。其中有写如何下载对应的驱动版本的步骤,如果看不明白就按照我下面的步骤来,看懂的话可以忽略我下面几步。

【Appium】测试时遇到手机内嵌H5页面的切换问题

3、在第一步中我们已经获取到了我们的chrome版本是74.0.3729.186,删掉最后的小版本然后将其拼接到该网址的后面:https://chromedriver.storage.googleapis.com/LATEST_RELEASE_74.0.3729,(只需要替换红色部分版本号即可,前面是固定的.)
搜索结果如下,就得到了一个chrome驱动对应的版本号74.0.3729.6(当然,实际数字将来可能会有所变化)

【Appium】测试时遇到手机内嵌H5页面的切换问题

4、使用从上一步中检索到的版本号74.0.3729.6来构造用于下载 ChromeDriver 的 URL。构造之后的URL为:https://chromedriver.storage.googleapis.com/index.html?path=74.0.3729.6/  (只需要替换红色部分版本号即可,前面是固定的.)

搜索即可得到chrome驱动的下载链接,如下:

【Appium】测试时遇到手机内嵌H5页面的切换问题

🍓2.3、将chrome驱动放到appium对应目录下

下载上面对应系统的chrome驱动,将解压出来的chromedriver.exe放到appium安装路径下的appium-chromedriver\chromedriver\win路径下,找不到路径的可以直接搜索appium-chromedriver就能找到对应文件了。

我的appium安装路径是:C:\Program Files\Appium Server GUI\resources\app\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win

【Appium】测试时遇到手机内嵌H5页面的切换问题

🍓2.4、注意事项

1、如果您使用来自Dev或Canary频道的Chrome,或者构建自己的自定义版本的Chrome,则可能没有可用的ChromeDriver正式支持它。在这种情况下,请尝试以下操作:

  • 首先,使用 Chrome 的主要版本号构建LATEST_RELEASE网址。例如,对于 Chrome 版本 73.0.3683.86,请使用网址“https://chromedriver.storage.googleapis.com/LATEST_RELEASE_73”。尝试从此 URL 下载一个小文件。如果成功,则文件包含要使用的 ChromeDriver 版本。
  • 如果上述步骤失败,请将 Chrome 主要版本减少 1,然后重试。例如,对于 Chrome 版本 75.0.3745.4,请使用网址“https://chromedriver.storage.googleapis.com/LATEST_RELEASE_74”下载一个小文件,其中包含要使用的 ChromeDriver 版本。

2、下载的chrome驱动如果没用的话,按上述步骤将版本加1减1多尝试几个即可,甚至加减2都行,只要能用就行。

三、编写脚本进行H5页面的切换

首先要注意的事项:

1、由于H5页面加载较慢,所以可以在抓元素之前加入时间等待。

2、在H5页面上操作,我们要切换到H5页面,想要回到app继续操作,同样也是要进行切换操作的。

🍓3.1、获取H5页面标签信息

当我们点击到H5页面之后,首先获取当前H5页面的标签信息,代码如下,注意:这里的contexts是有s的

其中 'NATIVE_APP' 指的是有道云app的标签,'WEBVIEW_com.youdao.note' 指的是H5页面的标签

# 切换到H5
# 获取相关的页面的标识
time.sleep(5)
page = self.driver.contexts
print(page)  # 返回结果为['NATIVE_APP', 'WEBVIEW_com.youdao.note']

🍓3.2、切换到H5页面

获取到标签之后就可以切换到对应的H5页面了,这里可以使用标签名,也可以直接用page[1]以防以后标签名有所改变。代码如下:

# 切换到H5页面
self.driver.switch_to.context('WEBVIEW_com.youdao.note')
# 或者self.driver.switch_to.context(page[1])

🍓3.3、H5页面元素定位

当我们切换到H5页面之后,后续的定位方式就和web浏览器的定位方式一样了,之前我们用chrome://inspect/#devices获取了对应的chrome版本号,在该网站上同样有H5页面对应的网址,直接拷贝该网址,然后在chrome浏览器打开,使用web端的开发工具就可以进行元素定位了。

如下两图:

【Appium】测试时遇到手机内嵌H5页面的切换问题

 【Appium】测试时遇到手机内嵌H5页面的切换问题

🍓3.4、退出H5页面返回手机端页面

当我们在H5页面完成测试之后,还需要回到手机端页面进行后续测试的话,有一个快捷返回的方式,就是按手机上的返回键,而返回键对应的keycode值为4。

下面两种方法任选一种,都可以。

# 点击手机返回键,返回手机端页面
self.driver.press_keycode('4')
# self.driver.keyevent('4')

🍓3.5、切换回手机app模式

之后想要在app上定位的话,我们需要从H5模式切换回app模式,在上面已经获取过app的标签了,所以可以直接使用。文章来源地址https://www.toymoban.com/news/detail-494552.html

# 切换到手机app模式下
self.driver.switch_to.context(page[0])

🍓3.6、完整代码

# 手机app中遇到H5页面如何切换
# 导入Appium类库
from appium.webdriver.webdriver import WebDriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
import time


class yd_H5():
    def __init__(self):
        self.caps = {
            'automationName': 'UiAutomator2',
            'platformName': 'Android',
            'platformVersion': '6.0',
            'deviceName': '192.168.23.101:5555',
            'appPackage': 'com.youdao.note',
            'appActivity': '.activity2.MainActivity'}
        self.driver = WebDriver('http://127.0.0.1:4723/wd/hub', self.caps)
        self.driver.implicitly_wait(10)
        el = WebDriverWait(self.driver, 10).until(
            lambda x: x.find_element(By.ID, 'com.android.packageinstaller:id/permission_allow_button'))
        if el:
            # 点击同意按钮
            self.driver.find_element(By.ID, 'com.android.packageinstaller:id/permission_allow_button').click()

    def test_H5qy(self):
        # 点击'我的'按钮
        self.driver.find_elements(By.ID, "com.youdao.note:id/tab_name")[3].click()
        time.sleep(1)
        # 滚屏操作(向下滚动)
        time.sleep(1)
        self.driver.swipe(90, 1700, 90, 850)
        time.sleep(1)
        # 点击有道云企业版按钮
        self.driver.find_element(By.ID, 'com.youdao.note:id/youdao_corp_enterprise').click()
        # 切换到H5
        # 获取相关的页面的标识
        time.sleep(5)
        page = self.driver.contexts
        print(page)  # 返回结果为['NATIVE_APP', 'WEBVIEW_com.youdao.note']
        # 切换到H5页面
        self.driver.switch_to.context('WEBVIEW_com.youdao.note')  # 也可以写page[1]使其参数化
        # 所有的自动化测试转入web端
        # 点击立即使用
        self.driver.find_element(By.XPATH, '//*[@id="banner-one"]/div/a[2]').click()
        # 点击手机返回键,返回手机端页面
        time.sleep(1)
        self.driver.press_keycode('4')
        # self.driver.keyevent('4')
        # 切换到手机app模式下
        self.driver.switch_to.context(page[0])
        # 之后就是正常在app内抓元素了


if __name__ == '__main__':
    h5 = yd_H5()
    h5.test_H5qy()

到了这里,关于【Appium】测试时遇到手机内嵌H5页面的切换问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 小程序内嵌H5页面监听小程序的返回事件

    因为业务上有需求,在开发小程序的时候有些页面要使用web-view组件嵌套H5页面 有个页面内有个表单,在表单内容还为填写完成的时候,监听用户点击左上角返回事件,弹出一个提示框,因为H5页面在小程序中的层级很高,所以弹出提示框只能在H5页面内完成,因此要在H5页面

    2024年02月11日
    浏览(49)
  • 微信小程序内嵌H5页面实现微信支付

    背景: 在微信H5页面已经实现了微信JSAPI的网页支付,老板要求把整个业务线快速转移到微信小程序中,作为懒惰的程序员来说,直接把页面嵌套到小程序不就行了。说干就干,在小程序中设置好基本信息后,一预览居然成功了,一切看来是那么顺利,可到了系统的支付环节

    2024年02月11日
    浏览(61)
  • 微信小程序与内嵌h5页面之间的参数传递

    小程序是采用vue+taroui技术栈 h5页面 所在文件:h5.vue 小程序页面:wx.vue,这里我用的是taro获取当前页面栈,大家可以用wx 这里的this.routerParams==={params:1} 小程序页面:wx.vue,首先向内嵌h5的webview所在页面跳转并携带所传参数。 webview页面—/pages/processLink/index。index.vue,由该页面

    2024年02月15日
    浏览(82)
  • 微信小程序内嵌H5页面获取openid+分享功能

    主要实现功能:1.通过webview实现小程序内嵌H5页面                          2.在H5页面获取到用户的openid                          3.在H5页面实现分享获取到分享人的openid和被分享者的openid 代码实现: 1.通过webview实现小程序内嵌H5页面 传参:在地址后面加入的参数就是我

    2024年04月23日
    浏览(63)
  • 微信小程序内嵌h5页面,实现动态设置顶部标题的功能

    一、需求描述 使用HBuilder X作为开发工具,vue作为开发语言,开发微信小程序。微信小程序页面内嵌h5页面,即web-view/web-view标签。通过设置不同url连接地址,设置不同的标题。 二、失败做法 页面A嵌入h5页面,需要给A设置标题。最开始写法是在lonload页面内,使用如下语句实现

    2024年02月04日
    浏览(74)
  • uniapp h5 竖向的swiper内嵌视频实现抖音短视频垂直切换,丝滑切换视频效果,无限数据加载不卡顿

    一、项目背景 :实现仿抖音短视频全屏视频播放、点赞、评论、上下切换视频、视频播放暂停、分页加载、上拉加载下一页、下拉加载上一页等功能。。。 二、前言 :博主一开始一直想实现类似抖音进入页面自动播放当前视频,上下滑动切换之后播放当前视频,但最后在

    2024年02月11日
    浏览(43)
  • uniapp实现微信小程序内嵌h5页面的相互跳转

    前期准备3个页面,小程序内2个,h5一个。 小程序内:操作页pageA,展示容纳h5的展示页PageWebview.vue。 h5:h5页面pageB,并且有可以访问的线上url。 【微信小程序pageA-内嵌h5页面pageB】 1.1 pageA实现点击跳转,将pageB的访问地址url拼接,并进入展示页PageWebview.vue 1.2 PageWebview.vue页面用

    2024年02月12日
    浏览(69)
  • H5页面内嵌到微信小程序和APP,做分享操作

    最近接到项目新需求,H5项目需要内嵌到微信小程序和APP里,然后将H5页面分享出去,被分享的人可以点击消息跳转到H5页面。H5页面不难,难的是要与微信小程序和APP进行交互,因为以前也没有接触过,所以这里卡的时间有点长。现分享出来 介绍 这里小编使用的是 uinapp 写的

    2024年02月06日
    浏览(198)
  • uniapp 之 uniapp app 与uniapp H5的通信 webview,以及处理H5页面的手机物理返回问题

    APP端: 引用 web-view     app给H5传参:通过h5地址传参 这个方法简单,就是直接通过src 地址后面通过 ? 拼接参数 app端 h5端通过uniapp生命周期函数 onLoad 接收参数     app给H5传参:通过方法 evalJS 传参 H5给app传参:通过 web-view 组件的 @message 绑定的方法 处理H5页面的手机物理返

    2024年01月16日
    浏览(49)
  • Appium自动化(7):手机H5网页元素识别及操作

    H5网页是指第5代HTML,也指用H5语言制作的一切数字产品。HTML5的设计目的是为了在移动设备上支持多媒体。目前很多网站都做了自适应,通过不同端打开呈现不同的网页效果。appium支持在手机端对web网页进行UI自动化操作。 appium对手机端H5网页进行自动化操作步骤如下: 模拟

    2024年01月19日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包