无法在appium中单击权限弹出窗口(Access Contact List)

时间:2016-11-24 09:12:22

标签: java android appium

我是Appium的新手。 我正在尝试自动化一个应用程序,该应用程序在启动时要求允许访问联系人列表。我在各种网站上研究过该解决方案,但无法解决这个问题。

代码:

public class TestSuiteBase {
WebDriver driver = null;

//Element Variables
String deviceIdTextbox = "et_Registration_DeviceID";

@BeforeClass
public void setup() throws MalformedURLException, InterruptedException {
    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability("platformName", "Android");
    capabilities.setCapability("platformVersion", "4.4.2");
    capabilities.setCapability("deviceName", "0ef3c26f");
    capabilities.setCapability("browserName", "");
    capabilities.setCapability("app", "D:\\Ashish\\AppiumProject\\Mobile Framework\\apk\\androidApplication.apk");
    capabilities.setCapability("appPackage", "com.atyati.rbl.mfi");
    capabilities.setCapability("appActivity", "com.atyati.rbl.mfi.Activity.SplashScreenActivity");

    AndroidDriver driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
    driver.manage().timeouts().implicitlyWait(80, TimeUnit.SECONDS);
    Thread.sleep(10000);        
}


@Test
public void Test() throws Exception {
    Thread.sleep(2000);
    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability("appWaitPackage", "com.android.packageinstaller");
    capabilities.setCapability("appWaitActivity", ".permission.ui.GrantPermissionsActivity");

    System.out.println("Trying to click Allow");

    driver.findElement(MobileBy.id("permission_allow_button")).click();
    driver.findElement(By.id(deviceIdTextbox)).sendKeys("123456789");
}

@AfterClass
public void tearDown() throws Exception {
    driver.quit();
}

输出:我的代码启动应用程序但是当权限弹出表面时,它无法单击。

问题:无法点击权限弹出窗口。

查询:我是否需要指定" appActivity"在移动到每个屏幕之前?

如果需要任何其他细节,请告诉我。

2 个答案:

答案 0 :(得分:0)

我已经弄清楚我哪里出错了。

解决方案:我必须为“编辑文本框”指定完整的资源ID

String deviceIdTextbox = "com.atyati.rbl.mfi:id/et_Registration_DeviceID";

此外,无需指定活动。

@Test
public void Test() throws Exception {
    Thread.sleep(1000);
    if(androidDriver!=null){
        System.out.println("driver does not == null");
        System.out.println("Trying to click Allow");

        androidDriver.findElement(By.id(contactListAllowPermissionBtn)).click();
        Thread.sleep(1000);
        androidDriver.findElement(By.id(deviceIdTextbox)).sendKeys("123456789");
        androidDriver.findElement(By.id(registerUserBtn)).click();
    } else {
        System.out.println("driver == null");
    }
}

答案 1 :(得分:0)

您可以使用此JAVA CODE单击允许应用程序权限按钮。只需添加方法并在您的类文件中调用您的测试用例中的方法。此代码摘自THIS POST

上的示例
public void allowAppPermission(){
 while (driver.findElements(MobileBy.xpath("//*[@class='android.widget.Button'][2]")).size()>0) 

 {  driver.findElement(MobileBy.xpath("//*[@class='android.widget.Button'][2]")).click();
 }
}