文章目录
环境
macOS: 13.6.6
Xcode: 15.2
iPhone: 17.2.1
Appium: 2.5.4
公司APP里包含了web页面,所以接下来就是攻克web页面操作的难题。
一、让iOS开发开启web inspector
首先需要说明的是,如果需要查看APP应用里的web页面,那么iOS16.4以上或者macOS13.3以上,需要iOS开发在APP里做一项设置,官方文档:
InAppWebViewSettings.isInspectable 设置为 true
只有这样,Mac系统中的Safari才能事实inspectAPP里web页面的元素
二、被测设备开启web UI自动化权限
在‘设置->Safari浏览器->高级’中,勾选远程自动化
三、Mac的Safari浏览器开启developer标签
打开Safari浏览器,点击设置,选择高级,在最底部有一个“Show features for web developers”:
勾选之后会显示Develop和developer标签:
这时,手机打开被测APP,进入到web页面,点击Mac中Safari浏览器的develop标签,就可以找到连接设备正在查看的web页面:
点击该页面链接,就可以打开该页面的html元素页面:
四、Appium client操作web元素
与安卓不一样,iOS操作web元素,实际上比较简单,直接可以使用web页面的xpath操作,但是在操作web元素之前,必须要确定的是,这个元素是原生的还是web的。
官方对于切换context的代码是这样的,这是官网文档:
# assuming we have an initialized `driver` object for an app
# switch to webview
webview = driver.contexts.last
driver.switch_to.context(webview)
# do some webby stuff
driver.find_element(By.CSS, ".green_button").click
# switch back to native view
driver.switch_to.context(driver.contexts.first)
# do more native testing if we want
driver.quit()
我想补充一句,获取最新context的方法,用last不得行,我用的:
webview = driver.contexts[-1]
总结
这篇文章主要是强调一下iOS16.4以上的设备,需要被测APP中设置了web页可被inspect,然后才能进行自动化。这个我在网上花了好些时间才搞明白,所以写下来。