【问题标题】:Unable to tap the link after tap on Allow button of permission alert in Appium?在Appium中点击权限警报的允许按钮后无法点击链接?
【发布时间】:2018-05-06 04:12:09
【问题描述】:

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

【问题讨论】:

    标签: java selenium-webdriver appium appium-android


    【解决方案1】:

    尝试使用 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);
    

    希望这对我也有用。

    【讨论】:

    • 看来您可能使用的是旧版本的 Appium 并且它是 Java 绑定,因为这同样适用于我。如果您可以尝试使用最新的 5.0.4 版本的 Java 绑定与 1.7.1 Appium 并告诉我?
    • 我有你提到的那个版本。但不幸的是,它似乎对我不起作用。我找到了替代方案并已发布。谢谢
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      我尝试在一种类似的情况下点击,它奏效了。

      【讨论】:

        猜你喜欢
        • 2021-09-13
        • 2014-11-24
        • 2022-06-15
        • 2019-10-14
        • 2018-12-12
        • 2017-02-28
        • 2020-10-22
        • 2020-02-26
        • 1970-01-01
        相关资源
        最近更新 更多