在Appium中点击许可警报的允许按钮后,无法点击链接?

时间:2017-11-22 12:11:29

标签: java selenium-webdriver appium appium-android

我使用Appium自动化Android应用。我面临的问题是,在按下访问权限的允许按钮选项卡后,它没有执行任何操作,如下图所示:

enter image description here

我尝试过以下代码:

@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的新手。我怎样才能找到丢失的东西?

3 个答案:

答案 0 :(得分:0)

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

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

我试图在其中一个类似的情况下进行攻击并且有效。

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

尝试使用TouchAction类进行点击而不是点击方法。 E.g:

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);

希望这应该有效,因为它也适用于我。