我正在寻找类似于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