如何使用 Appium 自动接受警报 -- 权限 Android 6.0
Posted
技术标签:
【中文标题】如何使用 Appium 自动接受警报 -- 权限 Android 6.0【英文标题】:How to automatically accept Alerts with Appium -- permissions Android 6.0 【发布时间】:2017-06-07 06:49:21 【问题描述】:环境:
操作系统 Windows 7 Appium 1.4.16.1 android 模拟器 6.0我需要自动接受任何权限提醒(Android 6.0 -- 短信、位置等)。
我尝试了什么:
使用driver.switchTo().alert().accept();
结果:
org.openqa.selenium.WebDriverException: Not yet implemented. Please help us: http://appium.io/get-involved.html
设置capabilities
:
capabilities.setCapability("autoGrantPermissions", "true");
capabilities.setCapability("autoAcceptAlerts", "true");
结果:它不起作用
【问题讨论】:
你可以尝试通过类似 driver.findElemt 的方式接受警报 我试过了: 1) driver.findElement(MobileBy.xpath("//*[@class='android.widget.Button'][2]")).click(); 2) driver.findElement(By.id("com.android.packageinstaller:id/permission_allow_button")).click();但是这些方法也行不通(( 【参考方案1】:它在 appium 中不起作用。如果您的警报包含“允许”按钮。尝试使用以下代码:
driver.findElementByAccessibilityId("ALLOW").click();
这将点击“允许”按钮,表示接受警报。
【讨论】:
标准 Android 系统警报。包含两个按钮:DENY --- ALLOW 你也可以以同样的方式工作。试试 driver.findElementByAccessibilityId("ALLOW").click();【参考方案2】:它肯定对你有用。
DesiredCapabilities cap=new DesiredCapabilities();
cap.setCapability(AndroidMobileCapabilityType.AUTO_GRANT_PERMISSIONS,true);
【讨论】:
【参考方案3】:您可以在启动应用程序之前授予应用程序所需的所有权限。以下是所需权限的命令列表。您可以通过 Java 代码执行这些命令。
adb -s yourDeviceSerialNumber shell pm grant your.app.packagename android.permission.READ_EXTERNAL_STORAGE
adb -s yourDeviceSerialNumber shell pm grant your.app.packagename android.permission.WRITE_EXTERNAL_STORAGE
adb -s yourDeviceSerialNumber shell pm grant your.app.packagename android.permission.ACCESS_FINE_LOCATION
adb -s yourDeviceSerialNumber shell pm grant your.app.packagename android.permission.CAMERA
adb -s yourDeviceSerialNumber shell pm grant your.app.packagename android.permission.READ_CONTACTS
adb -s yourDeviceSerialNumber shell pm grant your.app.packagename android.permission.WRITE_CONTACTS
【讨论】:
【参考方案4】:只需将'autoGrantPermissions': 'true',
添加到您想要的功能!
请注意!这将自动接受所有适用的权限,并且仅对 android 系统权限有效。这不适用于应用自定义开发权限。
【讨论】:
在我打开相机应用程序的情况下,它会要求弹出一个带有下一步按钮的窗口,即使添加此功能它也没有处理【参考方案5】:capabilities.setCapability(AndroidMobileCapabilityType.AUTO_GRANT_PERMISSIONS, true);
确实有效。
你可以试试。
【讨论】:
【参考方案6】:尝试添加功能:
'autoGrantPermissions': 'true',
有同样的问题,这为我解决了。
【讨论】:
以上是关于如何使用 Appium 自动接受警报 -- 权限 Android 6.0的主要内容,如果未能解决你的问题,请参考以下文章
WebDriver在解除权限对话框警报后未检测到单击的底部元素
appium+python自动化47-首次打开app权限弹窗问题