Appium - 无法使用xpath定位android元素

时间:2017-10-04 06:54:57

标签: android xpath appium

我必须点击ALLOW,才能在Android 7.0上获得应用权限。

我尝试了以下xpath

//android.widget.Button[contains(@resource-id,'com.android.packageinstaller:id/permission_allow_button')]

还尝试了//android.widget.Button[@text='ALLOW']

获取错误:

  

否此类元素例外。not_able_to_locate_using_xpath

3 个答案:

答案 0 :(得分:1)

你可以尝试一下:

driver.findElement(By.id("com.android.packageinstaller:id/permission_allow_button")).click();

driver.findElement(By.Name("Allow")).click();

driver.findElement(new By.ByName("Allow")).click();

这对我来说很好。

答案 1 :(得分:0)

因为,App请求许可。您可以使用所需功能直接允许权限。  试试这个:

DesiredCapabilities cap = new DesiredCapabilities(); 
cap.setCapability("autoGrantPermissions", "true");

检查this also.

答案 2 :(得分:0)

首先,您需要找到警报,无论是否存在? 那么你可以做的就是你可以创建列表,它会检查警报是否存在?然后,如果出现警报,则会点击允许按钮。

我正在使用PageObjectFactory Pattern,所以以下是我的代码,对我来说很好用:

@AndroidFindBy(xpath = "//android.widget.Button[@text='ALLOW']")
private List<MobileElement> alert;
@AndroidFindBy(xpath = "//android.widget.Button[@text='ALLOW']")
private MobileElement allowAlert;

 if (!alert.isEmpty()) {
        try {
            // do something
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        waitForElement(appiumDriver, allowAlert).click();
    }