0

我正在使用 Appium 自动化一个 Android 应用程序。我面临的问题是它在点击联系人访问权限的允许按钮后不执行任何操作,如下图所示:

在此处输入图像描述

我试过下面的代码相同:

@Test
public void doLogin()
{

    driver.findElement(By.id("com.rawalinfocom.rcontact:id/text_next")).click();
    // Clicks on Allow Button
    driver.findElement(By.id("com.android.packageinstaller:id/permission_allow_button")).click();
    // Clicks on Skip link
    driver.findElement(By.id("com.rawalinfocom.rcontact:id/text_skip")).click();
    driver.findElement(By.id("com.rawalinfocom.rcontact:id/checkbox_terms_conditions")).click();
    driver.findElement(By.id("com.rawalinfocom.rcontact:id/button_get_started")).click();
    driver.findElement(By.id("com.rawalinfocom.rcontact:id/input_number")).sendKeys("9422307801");
    driver.findElement(By.id("com.rawalinfocom.rcontact:id/button_submit")).click();
    driver.findElement(By.id("com.rawalinfocom.rcontact:id/input_enter_password")).sendKeys("1234");
    driver.findElement(By.id("com.rawalinfocom.rcontact:id/button_login")).click();
    System.out.print("Login Success");
}

我是 Appium 的新手。我怎样才能找到丢失的东西?

4

3 回答 3

0

尝试使用 TouchAction 类进行点击而不是单击方法。例如:

MobileElement skip = driver.findElement(By.id("com.rawalinfocom.rcontact:id/text_skip"));
TouchAction touch = new TouchAction (driver);
touch.tap (skip).perform ();

另外,我假设您已将驱动程序用作 AndroidDriver,如下图所示:

AndroidDriver <MobileElement> driver = new AndroidDriver (new URL ("http://<appium IP>:<Port>/wd/hub"), capabilities);

希望这应该工作,因为它也为我工作。

于 2017-11-23T10:48:40.543 回答
0

我可以通过设置以下功能来处理弹出窗口:

capabilities.setCapability("autoGrantPermissions", "true");
capabilities.setCapability("autoAcceptAlerts", "true");

在这种情况下,它不会显示始终授予权限集的弹出窗口。

于 2017-11-23T10:44:05.057 回答
0

当这样的弹出窗口出现时,驱动程序的焦点切换到该弹出窗口并且在单击后永远不会返回,在这种情况下,您可以做的是在单击该弹出窗口后立即保留“driver.getPageSource()”行,如果它无法返回驱动程序焦点您可以在某个随机位置点击,这会将驱动程序焦点返回到应用程序

为了在随机位置点击,可以安全地点击顶部位置,例如 (0,0) 或 (width/2,10)。

我尝试在一种类似的情况下点击它并且它起作用了。

于 2017-11-22T15:54:41.040 回答