使用带有 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 提供WebDriverWait
和ExpectedConditions.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 客户端驱动程序