2

我正在使用 Windows 8、IE 10 (java - WebDriver 2.37.0),我试图等到元素加载到页面上。我使用了以下代码:

WebDriver driver = new FirefoxDriver();
driver.get("http://abc.com");
WebElement myDynamicElement = (
    new WebDriverWait(driver, 10).until(
    ExpectedConditions.presenceOfElementLocated(By.id("myDynamicElement")));

但它抛出了一个超时异常。如果我删除此代码,它能够识别 webdriver 上的元素。

我在其他浏览器中尝试了与 FireFox、Chrome 相同的代码,但它仍然抛出错误。

任何帮助表示赞赏。

谢谢

4

2 回答 2

2

您正在将该等待分配给变量 myDynamicElement。如果你不给 WebElement 变量做点什么,Selenium 会抛出那个超时异常。如果您只想等待元素出现,则无需将其分配给 WebElement 变量。

WebDriver driver = new FirefoxDriver();
driver.get("http://abc.com");
new WebDriverWait(driver, 10).until(
    ExpectedConditions.presenceOfElementLocated(By.id("myDynamicElement")));

如果您需要分配该变量以供以后使用,请对该元素执行某些操作。

WebElement myDynamicElement =
    new WebDriverWait(driver, 10).until(
    ExpectedConditions.presenceOfElementLocated(By.id("myDynamicElement")));
myDynamicElement.isDisplayed();
于 2013-10-21T21:08:23.313 回答
0
  public static void waitForElementToAppear(Driver driver, By selector, long timeOutInSeconds) {
    WebDriverWait wait = new WebDriverWait(driver, timeOutInSeconds);
    wait.until(ExpectedConditions.visibilityOfElementLocated(selector));
  }
于 2014-09-07T09:15:09.517 回答