java - Selenium Webdriver.load.strategy 不稳定

标签 java selenium selenium-webdriver webdriver

我在使用 webdriver 加载页面时遇到问题。我当前的(有问题的)解决方案涉及使用 Firefox 的不稳定负载,但我愿意接受其他解决方案。

核心问题 我所有问题的根源来自这样一个事实:当我使用 webdriver 正常调用它时,我的页面永远不会完全加载,因此永远不会执行第二步,它只是总是加载。当您使用普通浏览器访问该网站时,它可以正常加载。我尝试了一些间歇性工作的解决方法,包括向谷歌打开驱动程序,然后转到有时会加载它的页面,并使用

IJavaScriptExecutor js = (IJavaScriptExecutor)Driver;
js.ExecuteScript("return window.stop");

按照 this question 的建议,有时会使其继续而不加载。但这些都不能始终如一地工作(可能 <50% 的时间)

到目前为止,我所得到的最好的方法是使用不稳定负载策略。然而,这有其自身不同的问题,所有这些问题只是有时会发生。

1)有时它根本不等待页面加载,并且在加载页面后的几毫秒内出现“无法定位元素:”异常,尽管我设置了等待:

new WebDriverWait(cdriver, 30).until(ExpectedConditions.visibilityOf(cdriver.findElement(By.id(myId))));

Thread.sleep(3000);解决了这个问题,但我读到这是一种草率的做事方式。

2) 如果我通过了该步骤,我的测试应该单击一个链接,然后单击另一个链接并继续测试。然而,第一次点击后它经常会卡住。所以如果我的代码是这样的:

    Thread.sleep(3000);
   element1.click();
     System.out.println("clicked!");
    element2.click();

第一次点击(顺便说一句,它不会加载新页面,只是在同一页面上弹出)会起作用,但是系统永远不会打印出“clicked!”,它会以与最初加载页面相同的方式卡住(没有不稳定加载的情况)。如果/当它克服了这个障碍,我认为其余的测试就很好了。

任何想法1)为什么它有时有效但其他无效。 2) 如何修复它 3) 如何首先加载我的页面

谢谢!

最佳答案

尝试以下方法:

不要等待页面上元素的可见性 - 在您的情况下为By.id(myId)
该元素可以在页面完全加载之前、所有 Java 脚本加载和触发之前等之前变得可见。
等待页面上的某些元素可点击。例如,您可以通过以下方式等待 link 变得可点击:

By locatorOfLink1 = By.xpath(....); // By.id, By.name, By.linkText etc.
wait.until(ExpectedConditions.elementToBeClickable(locatorOfLink1));
<小时/>

如果上述方法对问题 #2 没有帮助(点击后网络驱动程序卡住),则将 ENTER 键发送到链接而不是点击:

<小时/>
element1.sendKeys(Keys.ENTER);

关于java - Selenium Webdriver.load.strategy 不稳定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32595355/

相关文章:

java - assertTrue() 没有抛出 AssertionError

python - 定期从我的 Dropbox 帐户下载文件

java - 检测鼠标滚轮停止

java - 从 JXDatePicker 获取时间

java - java中的滚动超链接

java - 如何处理页面未找到或显示异常

python - 如何使用变量 driver.find_element_by_id 的值

javascript - 从下拉元素中选择的选项不可见

java - Selenium Chrome 驱动程序针对属性标签

java - JUnit 类型安全的 assertEquals