android - Appium/wdio - 无法关闭 Android 上的位置权限警报
问题描述
我正在使用webdriver.io为混合Cordova应用程序编写一套Appium测试。
"appium": "^1.10.0",
"wdio-appium-service": "^0.2.3",
"wdio-jasmine-framework": "^0.3.8",
"webdriverio": "^4.14.1",
在我的一项测试中,我试图以编程方式接受在 WebView 之上的应用启动时呈现的位置权限本机模式。
我可以在 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 上的本机警报?
解决方案
有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);
更多信息:
推荐阅读
- java - 如何使用 java KeyStroke 暂时关闭自动重复
- python - 我是 python 新手,这就是问题所在;\
- git - 当我 git stash 然后 git stash pop 我的更改总是未暂存
- arrays - CategoryComponent.html:53 ERROR 错误:尝试区分“[object Object]”时出错。只允许使用数组和可迭代对象
- sql - SQL,BigQuery - 用行的其他部分完成缺失值
- javascript - JavaScript 究竟是如何流动的?
- javascript - 如何从 JS fetch() 中突出显示单击的项目
- python - Python中的双重约束循环
- firebase - 返回firebase颤动中的集合计数时出错?
- python-3.x - Flask-Login:AttributeError:“int”对象没有属性“is_authenticated”