我必须自动化一个应用程序。在某些部分,用户可以浏览dropbox,gdrive但必须先登录。登录屏幕在浏览器中打开。在这里,我需要访问可以通过webview完成的浏览器元素。问题:
我无法从Native上下文切换到Webview。使用命令print driver.contexts仅打印u'Native_APP'。所以我尝试了不同的功能和不同的上限,我看到了Native和Webview。
但是如何运行原生应用并稍后切换到webview?我错过了什么吗?下面你可以看到我的上限。
原生和Web上下文可用,但无法启动我的应用..:
#set up appium
desired_caps = dict()
desired_caps['platformName'] = 'Android'
desired_caps['deviceName'] = 'Android Device'
desired_caps['app'] = PATH(ARTIFACTS_PATH + 'sample.apk')
desired_caps['appActivity'] = 'com.google.android.apps.chrome.ChromeTabbedActivity'
desired_caps['appPackage'] = 'com.android.chrome'
desired_caps['browser'] = 'Chrome'
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
print driver.contexts
可以启动我的应用但没有可用的webview上下文:
#set up appium
desired_caps = dict()
desired_caps['platformName'] = 'Android'
desired_caps['deviceName'] = 'Android Device'
desired_caps['app'] = PATH(ARTIFACTS_PATH + 'sample.apk')
desired_caps['appActivity'] = 'com.mysample.sample.HomeActivity'
desired_caps['appPackage'] = 'com.mysample.sample'
driver = webdriver.Remote('http://localhost:4723/wd/hub',
print driver.contexts
由于公司规则而无法替换appname和包名称
我知道切换的实际命令是driver.switch_to.context('Webview') 但是,当首先没有可用的webview时,我无法切换。
答案 0 :(得分:0)
开发人员需要将Webview调试设置为true才能在Web视图中执行操作
答案 1 :(得分:0)
提供一些睡眠或隐式等待,以便所有上下文加载并查看您的应用程序是否正在打印Webview或不使用,如果没有,则询问开发人员是否使用了人行横道。如果他们使用人行横道(https://github.com/appium/appium/issues/4597已知问题),那么这可能会对您有所帮助https://github.com/ITKarel/ChromeDriver