presenceOfElementLocated不处理过时的DOM元素吗?

时间:2017-09-01 18:43:32

标签: selenium selenium-webdriver

我试图等到使用presenceOfElementLocated从页面加载中清除叠加层。但是它从未检测到叠加层已消失(从DOM中删除)。我只能说这与DOM陈旧有关吗? numberOfElementsToBe确实有效。这看起来很奇怪,但如果它新鲜地查询DOM,那就完全有道理了。

wait = new WebDriverWait(driver, 30);
wait
    .withMessage("Loading Overlay never disappeared")
//this didn't work
    .until(ExpectedConditions.not(ExpectedConditions.presenceOfElementLocated(By.className("overlay"))));
//this worked
  .until(ExpectedConditions.numberOfElementsToBe(By.className("overlay"),0));

这是一种测试陈旧DOM的好方法,可以防止你正确等待dom删除吗?或者我是否需要更改我的presenceOfElementLocated支票?

1 个答案:

答案 0 :(得分:1)

如果您想等待叠加层消失,可以按以下方式实施invisibilityOfElementLocated条件:

wait.until(ExpectedConditions.invisibilityOfElementLocated(By.className("overlay")));