我在一个网站上进行测试,该网站有时会真正建立良好的连接。 一切都很好,直到它决定不能正常工作。 我使用wait.until分隔每个元素,一切正常,直到连接变慢并且它认为元素存在并决定使用它。
public static WebElement login_btn(WebDriver driver, WebDriverWait wait) {
wait.until(ExpectedConditions.refreshed(ExpectedConditions.presenceOfElementLocated(By.id("btnEntrar"))));
wait.until(ExpectedConditions.refreshed(ExpectedConditions.elementToBeClickable(By.id("btnEntrar"))));
element = driver.findElement(By.id("btnEntrar"));
return element;
}
我无法找到一种方法来模拟这个,直到网站变得非常慢,我才能看到它是否有效。经过几个月的尝试后,我无法找到一种方法来完全等待元素存在并且没有收到staleElementReferenceException或者由于我使用了元素而导致网站实际进入错误页面。在没有这些测试的情况下手动使用站点无法模拟webdriver发生的情况。对我能做什么有任何暗示或建议吗?
答案 0 :(得分:0)
您可以在this question和this question中尝试一些好的答案。一种方法是使用Chrome开发工具调节下载速度,https://stackoverflow.com/a/34728002/2386774。另一个是Charles Web Debugging Proxy。
为了更简单地解决这个问题,我的建议是专门等待页面完全加载然后刮掉页面。这将允许您等待一次,然后您不必在任何地方添加等待。如果您的网页是动态的,则需要添加额外的等待,例如单击一个按钮,它会更新页面的一部分。在这种情况下,请在单击按钮时添加等待,然后再次恢复正常。无需在任何地方添加等待。