gpt4 book ai didi

java - WebDriver 等待网站完全加载

转载 作者:行者123 更新时间:2023-12-02 09:45:15 25 4
gpt4 key购买 nike

我有这个代码:

        String chromeDriverPath = "C:\\buildtools\\chromedriver.exe" ;
System.setProperty("webdriver.chrome.driver", chromeDriverPath);
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless", "--disable-gpu", "--window-size=1920,1200","--ignore-certificate-errors");
WebDriver driver = new ChromeDriver(options);
driver.get(prerenderUrl);
//driver.wait(timeout);
String pageSource = driver.getPageSource();
log(pageSource);

如果添加代码driver.wait(timeout);,则会抛出异常

java.lang.IllegalMonitorStateException
at java.lang.Object.wait(Native Method)

无需等待页面即可渲染,但问题是需要渲染的网站是纯Javascript,也就是说,它看起来像这样

<html>
<body>
<div id="rootPanel">Website will be rendered here</div>
<script type="text/javascript" language="javascript" src="app.nocache.js"></script>
</body>
</html>

这是一个使用 Javascript 呈现的类似网站:http://samples.gwtproject.org/samples/Showcase/Showcase.html

app.nocache.js 将触发整个 DOM 的渲染(至少在普通浏览器上是这样的)

如果 driver.wait() 函数不适合等待 5 到 10 秒,那么正确的方法是什么?

最佳答案

您可以为页面加载保留显式的等待条件。对于显式等待,请从页面中识别某些元素并在条件中给出 WebElement。驱动程序将等待该项目存在。

WebDriverWait.until(condition-that-finds-the-element);

您还可以通过添加等待秒数(就地更改 10)来设置隐式等待。

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

关于java - WebDriver 等待网站完全加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56713395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com