繁体   English   中英

Appium 的隐式等待不起作用

[英]Appium's implicitlyWait does not work

我正在使用 Appium 来自动化一个 iOS 应用程序,但遇到了一个问题,有没有人遇到过同样的问题?

Appium 的implicitlyWait等待 API 似乎不起作用。 我正在使用 Java 和 JUnit 来运行测试,这是代码行:

driver.manage().timeouts().implicitlyWait(50, TimeUnit.SECONDS);

我已经检查了 appium 控制台中的调试信息,它看起来是正确的:

信息:[debug] 将 iOS 隐式等待设置为 50000 毫秒

我的环境:

最新的 Appium 1.2.1、Java 客户端库 1.6.1、Selenium Java 语言绑定 2.42.2 和 Sauce Lab 提供的示例应用程序“UICatalog”。

预先感谢您的回复。

您发布的代码管理超时以等待最多 50 秒。 它不会让驱动程序等待 50 秒。 您可以像这样使用等待:

 driver.wait(); //this will wait a max of 50 seconds cuz you said so

如果您问我希望使用等待 Webdriver 的正确方法是:

WebDriverWait wait;
wait = new WebDriverWait(driver, 60);
wait.until(ExpectedConditions.elementToBeClickable(By.id("blabla"));

上面的代码检查 blabla 是否可点击,直到证明该条件或 60 秒(如上所述)通过驱动程序等待。

在 Appium 中,可以通过这种方式设置隐式方式:

爪哇代码:

AppiumFieldDecorator decorator = new AppiumFieldDecorator(driver);
decorator.resetImplicitlyWaitTimeOut(50, TimeUnit.SECONDS);
PageFactory.initElements(decorator, this /* refers to current page object class*/);

这种超时将一直有效。

改变它是不可能的(至少我不知道)。

与使用网络驱动程序时一样,您可以通过以下方式执行此操作:

driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);
// some actions for which you don't want to wait implicitly
driver.manage().timeouts().implicitlyWait(50, TimeUnit.SECONDS);

试试这个:

public static void WaitForElementPresent1(String locator, int timeout)
{
    WebDriverWait wait = new WebDriverWait(driver, timeout);
    try{   
        wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(locator)));
    } catch (Exception e){
        e.printStackTrace();
    }
 }

如果您使用的是 PageFactory 模型,则可以使用 initElements() 方法指定隐式等待,如下所示 -

PageFactory.initElements(new AppiumFieldDecorator(driver, 10, TimeUnit.SECONDS), this);

我已经在 Appium 1.6 上尝试过这个,它工作正常。

设置隐式超时的新方法是使用代码

AppiumFieldDecorator decorator = new AppiumFieldDecorator(mobDriver);
decorator.DEFAULT_IMPLICITLY_WAIT_TIMEOUT = longValue;
decorator.DEFAULT_TIMEUNIT = TimeUnit.TimeUnit ;

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM