Appium/wdio - 无法关闭 Android 上的位置权限警报
Appium/wdio - unable to dismiss location permissions alert on Android
我正在使用 webdriver.io to write a suite of Appium tests for a hybrid Cordova 应用程序。
"appium": "^1.10.0",
"wdio-appium-service": "^0.2.3",
"wdio-jasmine-framework": "^0.3.8",
"webdriverio": "^4.14.1",
在我的一个测试中我正在尝试以编程方式接受位置权限本机模式 出现在 WebView 之上的 App 启动上。
我可以在 iOS 中使用 browser.alertAccept() 轻松做到这一点,但后者似乎不适用于 Android。
我也尝试切换到本机上下文以关闭它,但没有成功。
function dismissLocationPermissions() {
if (browser.isAndroid) {
new WebView().switchToContext(0);
browser.pause(2000);
const ANDROID_ACCEPT_ALERT_SELECTOR = "//*[@class='android.widget.Button'][2]";
// OR '*//android.widget.Button[@text="ALLOW"]' ?
$(ANDROID_ACCEPT_ALERT_SELECTOR).click();
WebView().switchToContext(1);
} else {
browser.alertAccept();
}
}
如何使用 wdio 关闭 Android 上的本机警报?
- 权限对话框是原生的,所以你不需要切换到 webview 来关闭它。
- 有一个 android
id
与 allow/deny 权限按钮关联,因此您可以使用它来代替您使用的标识符。
allow
按钮的 id
是:com.android.packageinstaller:id/permission_allow_button
.
deny
按钮的 id
是:com.android.packageinstaller:id/permission_deny_button
有autoGrantPermissions
DesiredCapability,如果你设置为true
- Appium会自动判断你的应用程序需要哪些权限,并在安装过程中授予应用程序.
该功能默认设置为 false
,因此您需要明确设置为:
DesiredCapabilities dc = new DesiredCapabilities();
dc.setCapability(MobileCapabilityType.NO_RESET, false);
dc.setCapability(AndroidMobileCapabilityType.AUTO_GRANT_PERMISSIONS, true);
driver = new AndroidDriver<>(url, dc);
更多信息:
我正在使用 webdriver.io to write a suite of Appium tests for a hybrid Cordova 应用程序。
"appium": "^1.10.0",
"wdio-appium-service": "^0.2.3",
"wdio-jasmine-framework": "^0.3.8",
"webdriverio": "^4.14.1",
在我的一个测试中我正在尝试以编程方式接受位置权限本机模式 出现在 WebView 之上的 App 启动上。
我可以在 iOS 中使用 browser.alertAccept() 轻松做到这一点,但后者似乎不适用于 Android。
我也尝试切换到本机上下文以关闭它,但没有成功。
function dismissLocationPermissions() {
if (browser.isAndroid) {
new WebView().switchToContext(0);
browser.pause(2000);
const ANDROID_ACCEPT_ALERT_SELECTOR = "//*[@class='android.widget.Button'][2]";
// OR '*//android.widget.Button[@text="ALLOW"]' ?
$(ANDROID_ACCEPT_ALERT_SELECTOR).click();
WebView().switchToContext(1);
} else {
browser.alertAccept();
}
}
如何使用 wdio 关闭 Android 上的本机警报?
- 权限对话框是原生的,所以你不需要切换到 webview 来关闭它。
- 有一个 android
id
与 allow/deny 权限按钮关联,因此您可以使用它来代替您使用的标识符。
allow
按钮的 id
是:com.android.packageinstaller:id/permission_allow_button
.
deny
按钮的 id
是:com.android.packageinstaller:id/permission_deny_button
有autoGrantPermissions
DesiredCapability,如果你设置为true
- Appium会自动判断你的应用程序需要哪些权限,并在安装过程中授予应用程序.
该功能默认设置为 false
,因此您需要明确设置为:
DesiredCapabilities dc = new DesiredCapabilities();
dc.setCapability(MobileCapabilityType.NO_RESET, false);
dc.setCapability(AndroidMobileCapabilityType.AUTO_GRANT_PERMISSIONS, true);
driver = new AndroidDriver<>(url, dc);
更多信息: