- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要等待页面“弹出覆盖”加载,然后才能滚动到相关的网络元素。
下面的代码在定位并滚动到 Web 元素时成功,但我想避免 Thread.sleep。
public void scrollToElementByLocator(WebElement element) throws InterruptedException {
Thread.sleep(4000);
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView();", element);
((JavascriptExecutor) driver).executeScript("window.scrollBy(0, -400)");
<强>3。任何人都可以建议另一种方法来等待页面加载,然后滚动到预期的 web 元素而不使用 thread.sleep 吗?
非常感谢您的帮助
最佳答案
这些很痛苦。理想情况下,您可以联系开发人员,他们可以告诉您可以等待哪些元素出现/消失。在这种情况下,我假设您无权访问它们。
我尝试做的是触发操作,快速右键单击并选择“检查元素”,然后查看弹出的元素。如果幸运的话,对话框等会保持不变并且很容易找到。在这种情况下,它们发生的时间非常短暂,这使得事情变得非常困难。我所做的就是执行上面的操作,直到触发它打开/关闭并观察 DOM 元素出现/消失。我终于找到了正确的地方,并使用 screencap 和 OCR 找到了这个
<div class="modal in" id="loading-modal" data-backdrop data-keyboard="false" tabindex="-1" role= "dialog" aria-hidden="true" style="z-index: 1100; top: 475px; display: block; padding-right: 17px;" modal-dialog">
<div> id="loading-page-backdrop" class="in"></div>
那里有几个 DIV,其中一个很可能是您正在寻找的元素,并且都有 ID,因此它们应该很容易找到并等待它们消失。
// wait for modal to disappear
new WebDriverWait(driver, 10).until(ExpectedConditions.invisibilityOfElementLocated(By.id("loading-modal")));
// do stuff
即使这些不是您正在寻找的元素,您也应该能够使用此技术来找到您想要的元素。
顺便说一句,我用 Java 编写自动化,我从来不需要滚动窗口......它只是为我做的。您是否尝试过没有滚动代码的场景?
关于java - Webdriver:WAITING PagetoLoad,然后滚动到元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41124610/
我需要等待页面“弹出覆盖”加载,然后才能滚动到相关的网络元素。 下面的代码在定位并滚动到 Web 元素时成功,但我想避免 Thread.sleep。 public void scrollToEleme
我是一名优秀的程序员,十分优秀!