如何在空手道中将驱动程序上下文从 Android 切换到 webview
How to switch driver context from Android to webview in karate
我正在从事一个使用 Karate 和 appium 自动化移动应用程序的项目。我正在处理的应用程序似乎是一个混合应用程序。当我启动该应用程序时,它会将我重定向到网络 URL 以登录(网络浏览器)并且我的空手道测试无法找到登录页面下存在的元素。
Feature: android test
Background: App Preset
* configure driver = { type: 'android', webDriverUrl : 'xxxxx', start: false, httpConfig : { readTimeout: 120000 } }
Scenario: android mobile app UI tests
Given driver { webDriverSession: { desiredCapabilities : "#(android.desiredConfig)"} }
And driver.click('//android.widget.Button[@text="Get Started"]')
# Sign details
And click('#signInName')
And input('#signInName', 'someone@gmail.com')
And input('#password', '123456')
默认情况下,空手道使您处于本机应用程序上下文中。您可以通过调用移动命令来检查所有可用的上下文,
def contexts = driver.script("mobile: getContexts")
或
json contexts = driver.http.path("contexts").get()
和print contexts
您应该能够如下所示将上下文切换到网络视图(而不是 WEBVIEW_1
使用您从上一步获得的相应网络视图),
driver.setContext("WEBVIEW_1")
然后通过
切换回原生应用
driver.setContext("NATIVE_APP")
如果遇到任何问题,请尝试使用不同的定位器策略
我正在从事一个使用 Karate 和 appium 自动化移动应用程序的项目。我正在处理的应用程序似乎是一个混合应用程序。当我启动该应用程序时,它会将我重定向到网络 URL 以登录(网络浏览器)并且我的空手道测试无法找到登录页面下存在的元素。
Feature: android test
Background: App Preset
* configure driver = { type: 'android', webDriverUrl : 'xxxxx', start: false, httpConfig : { readTimeout: 120000 } }
Scenario: android mobile app UI tests
Given driver { webDriverSession: { desiredCapabilities : "#(android.desiredConfig)"} }
And driver.click('//android.widget.Button[@text="Get Started"]')
# Sign details
And click('#signInName')
And input('#signInName', 'someone@gmail.com')
And input('#password', '123456')
默认情况下,空手道使您处于本机应用程序上下文中。您可以通过调用移动命令来检查所有可用的上下文,
def contexts = driver.script("mobile: getContexts")
或
json contexts = driver.http.path("contexts").get()
和print contexts
您应该能够如下所示将上下文切换到网络视图(而不是 WEBVIEW_1
使用您从上一步获得的相应网络视图),
driver.setContext("WEBVIEW_1")
然后通过
切换回原生应用driver.setContext("NATIVE_APP")
如果遇到任何问题,请尝试使用不同的定位器策略