【发布时间】:2019-04-14 21:34:18
【问题描述】:
我对 Appium 中的 AndroidDriver 有一些问题, 目前我正在使用此代码等待几次以提供我的应用程序登录/注册过程。
BasePage 类:
protected AndroidDriver driver;
public BasePage(AndroidDriver driver) {
this.driver = driver;
}
public void waitFor(int second) {
driver.manage().timeouts().implicitlyWait(second, TimeUnit.SECONDS);
}
并在这个类上实现:
public class RegistrationPage extends base.BasePage {
public RegistrationPage(AndroidDriver driver) {
super(driver);
}
public RegistrationPage alreadyExistRegistration() {
waitForVisibilityOf(button_login);
swipeAndroid(1000, 1000, 100, 1000);
waitFor(1);
swipeAndroid(1000, 1000, 100, 1000);
waitFor(1);
swipeAndroid(1000, 1000, 100, 1000);
waitFor(1);
driver.findElement(button_register).click();
driver.findElement(input_dob).click();
driver.findElement(ok).click();
driver.findElement(phone_no).sendKeys("888888888");
driver.findElement(setup_pin).sendKeys("1111");
driver.findElement(confirm_pin).sendKeys("1111");
tapAndroid(840,1832);
driver.findElement(check_term).click();
driver.findElement(btn_next).click();
waitFor(10);
Assert.assertTrue(driver.findElement(message).getText().equalsIgnoreCase("Your Number is Already Registered"));
我已将参数编辑到 50 秒,但在 Junit 测试中没有等待。在使用 AndroidDriver 之前,我使用的是 WebDriver,它运行良好,但我需要 Android 驱动程序来执行 TouchAction。 所以我的测试用例总是失败,因为当断言运行时它会立即找到元素,而它还不可用。
【问题讨论】:
-
我也有同样的问题。目前我正在使用 ExplicitWait 和 Thread.sleep() 方法。
-
是的,现在我正在使用 java 它自己的 Thread.sleep()。将尝试 ExplicitWait,我希望这也有效。
标签: appium appium-android