我使用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的新手。我怎样才能找到丢失的东西?
答案 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);
希望这应该有效,因为它也适用于我。