抓脑阔系列之App混合应用上下文环境的切换
什么是混合应用?在手机模拟器或真机中,如果有存在非Android原生控件的内容,比如网页,这种应用即可被称为混合应用。
使用uiautomatorviewer定位APP元素时,只有Android原生控件元素能够被定位到。
如果是非原生的,那么它展示出的就是一个整体,则无法对内部元素进行定位,而webdriver不提供这些非原生的元素定位功能,为了能够使用混合应用,所以要进行上下文切换,假设把模拟器中的浏览器当作一个混合应用,
我们先定位浏览器url输入框,输入http://www.baidu.com,回车,
input_url = driver.find_element_by_id('com.android.browser:id/url') input_url.send_keys('http://www.baidu.com') driver.press_keycode(66)
切换到浏览器的webview(context可以使用driver.contexts获取),
driver.switch_to.context('WEBVIEW_com.android.browser')
后续的操作与Web自动化一样的,定位到百度的搜索输入框,录入‘博客园’,并执行搜索,
baidu_input = driver.find_element_by_id('index-kw') baidu_input.send_keys('博客园') baidu_input.submit()
如果要退出浏览器,返回Android原生应用,怎么操作呢?这里有两种方法:
driver.switch_to.context(None) 或者 driver.switch_to.context('NATIVE_APP')
注意:
1、由于webview与网页有关,所以会涉及到浏览器(chrome)版本问题,可以在caps里配置【chromedriverExecutableDir】
2、真机的webview调试模式要打开;最好root,否则可能发现不了context。

浙公网安备 33010602011771号