0

我正在使用下面的代码来捕获网站每个页面的屏幕截图。它可以工作,但有时某些页面加载延迟 1 到 2 秒/秒,我被一个旋转的 gif 圈子用“请稍候...”消息轰炸。

File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("c:\\tmp\\screenshot.png"));

使用 Firebug,看起来这可能是罪魁祸首:

<div class="blockUI blockMsg blockPage" style="z-index: 1011; position: fixed;
padding: 15px; margin: 0px; width: 20%; top: 40%; left: 40%; text-align: center; 
color: rgb(255, 255, 255); border: medium none; background-color: rgb(0, 0, 0); 
cursor: wait; opacity: 0;">
<img src="/images/front/loading.gif"/>
<br/>
<strong>Please wait...</strong>
</div>`

我的问题是:如何计时我的屏幕截图以避免这种情况?Thread.sleep(2000) 有效,但我宁愿远离它。我还检查了页面上是否存在元素,它们在那里,但是这条消息妨碍了。

感谢任何建议。谢谢。

**编辑添加了一些被截断的代码(来自 Firebug)。

4

2 回答 2

2

您是否尝试等到“请稍候...”元素不可见?

wait.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("//strong[text()='Please wait...']"));
于 2013-08-08T16:11:11.263 回答
0

我们可以将它用于最新版本的 Internet Explorer 10+:

wait.until(ExpectedConditions.invisibilityOfElementWithText(
      By.xpath("//div[2]/div[contains(text(),'Please Wait....')]"),"Please Wait...."));
于 2016-04-01T09:51:15.670 回答