当前位置: 首页 > 知识库问答 >
问题:

Android Appium-AndroidDriver Appium上的隐式等待不工作

金正阳
2023-03-14

基本页面类:

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 Driver来做TouchAction。所以我的测试用例总是失败,因为当assert运行时,它会立即找到元素,而元素还不可用。

共有1个答案

孟跃
2023-03-14

我想你把隐含等待的概念搞错了。我们不需要每次都设置。我们需要在驱动程序初始化时设置一次,最大超时像60秒,它将等待元素时找到它。

同时,您可以使用具有大于1分钟的超时值的显式wait,

WebDriverWait wait = new WebDriverWait (driver, 120);

用它的方法,

wait.until (ExpectedConditions.visibilityOfElementLocated (By.id ("your ID")));
 类似资料:
  • 问题内容: 我正在学习Java Maven Selenium。我想要在Selenium中使用这样的东西。 打开网站(例如https://www.facebook.com) 单击登录的电子邮件字段 等待20秒 输入我的电子邮件 这是我的简单代码: 该代码不起作用。它只会打开Facebook,单击电子邮件字段并输入我的电子邮件ID,而不是等待10秒钟才输入我的电子邮件。 问题答案: 并且无法正常工作,

  • 问题内容: 这是我第一次使用selenium和无头浏览器,因为我想使用ajax技术来爬网某些网页。 效果很好,但是在某些情况下,加载整个页面会花费太多时间(尤其是当某些资源不可用时),因此我必须为selenium设置超时时间。 首先,我尝试了和,但是当我设置这些超时时,如果页面未完全加载,我将不会得到任何页面源,如下代码所示: 所以我尝试使用隐式等待和条件等待,如下所示: 这次我得到了想要的内容。

  • 问题内容: 我正在学习Java Maven Selenium。我希望在Selenium中使用。 打开网站(例如https://www.facebook.com) 单击登录的电子邮件字段 等待20秒 输入我的电子邮件 这是我的简单代码: 该代码不起作用。它只会打开Facebook,单击电子邮件字段并输入我的电子邮件ID,而不是等待10秒钟才输入我的电子邮件。 问题答案: 并且无法正常工作,他们将在指

  • 问题内容: 我是Selenium WebDriver的新手,正在尝试了解“等待”元素出现的正确方法。 我正在测试一个带有单选按钮答案的问题的页面。选择答案时,JavaScript可能启用/禁用页面上的某些问题。 问题似乎是Selenium的“单击速度太快”,而不是等待Javascript完成。我尝试用两种方式解决此问题- 显式等待解决了该问题。具体来说,这可以解决我的问题: 但是,我 宁愿 使用隐

  • 驱动程序级别的隐式和显式等待之间有什么区别。哪一个是驱动级等待。如果我们在代码中提供隐式和显式等待。哪一个优先。

  • 我如何用一个显式的替换这个隐式的等待呢? driver=新ChromeDriver(功能); driver.manage().DeleteAllCookies();