【问题标题】:Not able to click on permission pop-up (Access Contact List) in appiumappium中无法点击权限弹窗(访问联系人列表)
【发布时间】:2017-01-06 15:13:03
【问题描述】:

我是 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”?

如果需要任何其他详细信息,请告诉我。

【问题讨论】:

    标签: java android appium


    【解决方案1】:

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

    解决方案:我必须为编辑文本框指定完整的资源 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");
        }
    }
    

    【讨论】:

      【解决方案2】:

      您可以使用此 JAVA 代码多次单击允许应用权限按钮。只需在您的类文件中添加方法并在您的测试用例中调用该方法。此代码取自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();
       }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-12
        • 1970-01-01
        • 2015-01-20
        • 2015-07-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多