如何使用 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在解除权限对话框警报后未检测到单击的底部元素

XCUITest:自动接受系统警报。需要更细粒度的控制

appium+python自动化47-首次打开app权限弹窗问题

如何使用 Appium 启用/禁用应用程序权限?

出现“使用当前位置”权限弹出窗口时,Appium 和 Selenium 无法连接

如何处理 selenium webdriver 自动化的背靠背警报