我正在尋找類似於waitForElementPresent
的東西來檢查元素是否在我點擊它之前顯示。我認爲這可以通過implicitWait
來完成,所以我用了以下內容:WebDriver - 使用Java等待元素
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
然後
driver.findElement(By.id(prop.getProperty(vName))).click();
單擊不幸的是,有時等待的元素,有時沒有。我找了一會,發現這個解決方案:
for (int second = 0;; second++) {
Thread.sleep(sleepTime);
if (second >= 10)
fail("timeout : " + vName);
try {
if (driver.findElement(By.id(prop.getProperty(vName)))
.isDisplayed())
break;
} catch (Exception e) {
writeToExcel("data.xls", e.toString(),
parameters.currentTestRow, 46);
}
}
driver.findElement(By.id(prop.getProperty(vName))).click();
它等待好了,但在超時之前它不得不等待10次5,50秒。有點多。所以我將隱含的等待時間設置爲1秒,直到現在看起來都很好。因爲現在有些事情在超時之前等待10秒,但其他一些事情在1秒後超時。
你如何覆蓋代碼中存在/可見的等待元素?任何提示都是可觀的。
謝謝!如果我只是早知道這門課程,我的生活會更容易:) – tom 2012-08-02 08:53:26
如何將您的代碼整合到此格式中?\t'@FindBy(how = How.ID,using =「註冊按鈕」) \t WebElement signUpButton;''此外,我仍然得到一個NPE與您的代碼。看起來它試圖獲得elementToBeClickable。當元素未被加載時,我們如何使用這種方法? – HelloWorldNoMore 2016-04-21 00:38:39