挪动端 app 自动化框架很多,然而有一些框架因为不反对混合利用测试,始终没有齐全风行。比拟典型的是经典的 Python 框架 uiautomator2, 这个框架简略好用,没有 appium 那样简单的 api 调用,受到不少 python 自动化工程师的青眼。
然而不论是官网文档,还是民间教程,根本都没有波及到用它做混合利用测试,本文提供一种非常简单的办法,只须要多加 4 行代码,就能让 uiautomator2 反对混合利用测试。
什么是混合利用
挪动端利用有两种典型的开发方式,一种是原生的 native app,一种是基于网页开发技术的 web app。原生利用的体验感更好,然而如果想同时开发安卓利用和 ios 利用,须要不同的原生开发技术。web 利用能够十分轻松的做到安卓和 ios 的跨平台开发,它的体验感要略微差一些,不像原生利用那么晦涩。
Hybrid App(混合模式挪动利用)是介于 web app 和 native app 之间的开发方式,能够在原生界面中嵌套网页,因此能够同时具备体验感和跨平台能力。
目前支流的挪动端 app 测试框架 appium 具备混合利用测试的能力,然而这个框架搭建和应用都比拟麻烦,封装的办法也没有那么 pythonic,因而有很多公司不想应用,他们更加喜爱简洁优雅的 python uiautomator2 框架。十分遗憾,这个框架目前没有反对混合利用测试。
WebView 自动化测试步骤
- 第一步,通过原生操作进入 webview 网页;
- 第二步,应用 selenium 等网页测试工具进入网页;
- 第三步,应用 selenium 等网页测试工具测试。
这两头的关键步骤在于如何应用 selenium, 如果间接关上一个新的 selenium 会话,那么会关上一个新的页面,和 app 中的 webview 是离开的,因而无奈测到嵌套网页。selenium 必须要和 app 建设某种关系,使他们绑定在一起,操作 selenium 时就是间接操作 app 当中的网页。
通过 uiautomator2 进入 webview
这里就是最根本的 uiautomator2 操作,具体操作能够查看 官网文档,这里应用的 app 是 android bootstrap,能够间接 点击下载。
d = u2.connect()
d.app_start('com.github.android_app_bootstrap')
d(text='Login').click()
d(text='Baidu').click()
selenium 连贯 webview
APP 的第三个菜单能够间接关上 baidu 网页,从而到 webview 网页。如果不应用 selenium 连贯,间接通过 uiautomator2 定位网页中的元素,是会报错的。
那如何通过 selenium 连贯 webview 呢?
- 首先,通过设施 d 获取以后操作的 app,从而失去包名
- 而后,初始化一个 Chrome 浏览器对象
- 须要留神的是,Chrome 对象须要增加额定的参数,指定连贯的设施,webview 绑定的报名,以及配置在 app 中应用 android 浏览器。
之后的操作就和 selenium 做 web 自动化测试没有任何区别了,无非就是点击网页,做自动化操作:
driver = webdriver.Chrome('chromedriver_68.exe', options=options)
driver.implicitly_wait(8)
driver.find_element('id', 'index-kw').send_keys('你好')
WebView 自动化测试在浏览器中的阐明
是不是很好奇,我怎么晓得要这么写代码,能力连贯 webview,达到测试成果?其实世间没有那么多神秘的学习办法,只有你肯用心,肯定是能够找到学习的门路的。这段代码清清楚楚的写在 chrome webdriver 的官网文档中,只是,你可能打不开。截屏看一下:
其余 webdriver 的配置也能够查看 MDN web docs。
展现成果:
我是九柄,公众号【九柄】,分享软件测试文章、面试、教程材料,欢送来看看。