簡體   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