我有以下代码等待javascript渲染完成。
ChromeDriver driver = new ChromeDriver();
driver.get(url);
WebDriverWait wait = new WebDriverWait(driver, 3000);
wait.until(new Predicate<WebDriver>() {
public boolean apply(WebDriver driver) {
return ((JavascriptExecutor)driver).executeScript("return document.readyState").equals("complete");
}
}
);
问题是,完成后如何阅读页面源代码?下面的方法不能保证将根据其文档返回修改后的页面的源。
driver.getPageSource();
答案 0 :(得分:0)
也许这不是一个真正的答案,但是它的文本太长,无法发表评论
首先,您想实现什么?
据我尝试发现,ChromeDriver
的{{1}}返回“当前”源代码。不是最初从服务器发送的源代码。
用javascript加载的页面的问题似乎在于,浏览器接收到页面内容,并且在最初解释并呈现页面内容之后,对于浏览器而言,文档已准备就绪
通过javascript的请求不会更改(无法更改?)getPageSource()
因此,在最初加载并呈现页面之后,其他一切都是“公正”的dom操纵
有人建议只要到达页面末尾和/或在页面上找到某个元素就向下滚动
但是
让我们说您必须向下滚动50,000像素到页面末尾,如果以前的元素被javascript删除,您将永远不会一次获得“整个”源代码
在我看来,您必须问自己一个问题,您想要实现什么
对我来说,类似以下代码的作品:
document.readyState