使用带有 java 的 selenium Webdriver 等待表完全加载

Posted

技术标签:

【中文标题】使用带有 java 的 selenium Webdriver 等待表完全加载【英文标题】:Waiting for a table to load completely using selenium Webdriver with java 【发布时间】:2016-11-09 18:07:26 【问题描述】:

有没有办法通过 java 使用 selenium 等待表完全加载? 在我的情况下,它看起来像是使用 ajax 和/或 jquery 加载的表。 到目前为止,我能找到的唯一可能的解决方案就是在几毫秒内简单地超时/暂停。 我正在寻找更高级的解决方案,而不是硬编码的解决方案。 谢谢

【问题讨论】:

欢迎来到 SO。请包括尝试的解决方案、它们为什么不起作用以及预期的结果。这确实有助于我们找出您的代码的问题。见:How to create a Minimal, Complete, and Verifiable example。谢谢! 在表格完全加载之前是否出现任何加载图像??? @palaѕн 我已经添加了到目前为止我尝试做的事情。 @SaurabhGaur 不,根本没有加载图像。 驱动尝试初始化driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS); 【参考方案1】:

Selenium 提供WebDriverWaitExpectedConditions.visibilityOfElementLocated 以等待DOM 上可见的元素。你应该尝试如下:-

WebDriverWait wait = new WebDriverWait(driver, 30);
WebElement el = wait.until(ExpectedConditions.visibilityOfElementLocated(By...));

注意 :- 在这里您可以提供By 定位器为.id().className().xpath().cssSelector() 等您的表格元素。它将等待30 秒来检查您的桌子在DOM 上的可见性。

如果元素在30 seconds 中不可见,它将抛出TimeoutException 异常。

例如:- 如果您想使用id 检查您的表格的可见性,您只需以wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("your table id"))); 运行

你也可以增加或减少超时时间..

希望对你有帮助..:)

【讨论】:

谢谢,我会试试这个解决方案。你能解释一下什么是DOM吗? 30这个数字又是什么意思?元素可见的超时时间是毫秒/秒吗?如果它不会抛出异常?还有 el 之后的用法是什么?只是我只是运行 wait.until(ExpectedConditions.visibilityOfElementLocated(By...)); ?谢谢。 @ZvikaNadav 文档对象模型 (DOM) 是用于 html 和 XML 文档的编程 API。它定义了文档的逻辑结构以及文档的访问和操作方式 感谢您提供的信息。我会尝试一下,看看测试是否不再失败,希望:) 我会让你。 感谢您提供的信息。目前您的解决方案解决了我的问题,您是否确切知道 ExpectedConditions.visibilityOfElementLocated 屏幕背后的实际过程是什么?你能解释一下吗?谢谢 这很好,感谢您提供的信息和链接,非常有用。你有没有其他网站可以让我研究硒的方法/功能?提前致谢。

以上是关于使用带有 java 的 selenium Webdriver 等待表完全加载的主要内容,如果未能解决你的问题,请参考以下文章

如何让 Selenium firefox 驱动只截取浏览过的页面

Selenium eclipse 配置与 Webdriver 2 和 Selenium Java 客户端驱动程序

selenium 常用api

带有 Yandex 的 Java Selenium WebDriver

Selenium 验证 div 是不是有滚动条

使用带有 java 的 selenium Webdriver 等待表完全加载