我正在使用webdriver.io为混合Appium应用编写一套Cordova测试。
"appium": "^1.10.0",
"wdio-appium-service": "^0.2.3",
"wdio-jasmine-framework": "^0.3.8",
"webdriverio": "^4.14.1",
在我的一项测试中,我试图以编程方式接受在WebView顶部启动的应用程序上显示的 Location Permissions native modal 。
我可以使用browser.alertAccept()在iOS中轻松地做到这一点,但后者似乎不适用于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上的本机警报?
答案 0 :(得分:1)
id
,因此您可以使用它代替已使用的标识符。 id
按钮的allow
是:com.android.packageinstaller:id/permission_allow_button
。
id
按钮的deny
是:com.android.packageinstaller:id/permission_deny_button
答案 1 :(得分:1)
有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);
更多信息: