在 Appium 中点击权限警报的允许按钮后无法点击 link?
Unable to tap the link after tap on Allow button of permission alert in Appium?
我正在使用 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 的新手。我怎样才能找到丢失的东西?
当出现这样的弹出窗口时,驱动程序的焦点将切换到该弹出窗口,并且在单击后永远不会 returned,在这种情况下,您可以做的是在之后保留 "driver.getPageSource()" 行单击该弹出窗口,如果它不起作用以 return 驱动程序焦点,您可以点击某个随机位置,这将 return 驱动程序焦点返回到应用程序
为了在随机位置点击,在顶部位置点击(0,0)或(width/2,10)是安全的。
我尝试在一种类似的情况下敲击并且成功了。
我可以通过设置以下功能来处理弹出窗口:
capabilities.setCapability("autoGrantPermissions", "true");
capabilities.setCapability("autoAcceptAlerts", "true");
在这种情况下,它不会显示始终授予的权限集的弹出窗口。
尝试使用 TouchAction class 来点击而不是点击方法。
例如:
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 自动化 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 的新手。我怎样才能找到丢失的东西?
当出现这样的弹出窗口时,驱动程序的焦点将切换到该弹出窗口,并且在单击后永远不会 returned,在这种情况下,您可以做的是在之后保留 "driver.getPageSource()" 行单击该弹出窗口,如果它不起作用以 return 驱动程序焦点,您可以点击某个随机位置,这将 return 驱动程序焦点返回到应用程序
为了在随机位置点击,在顶部位置点击(0,0)或(width/2,10)是安全的。
我尝试在一种类似的情况下敲击并且成功了。
我可以通过设置以下功能来处理弹出窗口:
capabilities.setCapability("autoGrantPermissions", "true");
capabilities.setCapability("autoAcceptAlerts", "true");
在这种情况下,它不会显示始终授予的权限集的弹出窗口。
尝试使用 TouchAction class 来点击而不是点击方法。 例如:
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);
希望这对我有用。