页面完全加载后读取页面源代码(执行JavaScript)

时间:2019-07-27 15:39:50

标签: java selenium selenium-webdriver

我有以下代码等待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();

1 个答案:

答案 0 :(得分:0)

也许这不是一个真正的答案,但是它的文本太长,无法发表评论

首先,您想实现什么?

据我尝试发现,ChromeDriver的{​​{1}}返回“当前”源代码。不是最初从服务器发送的源代码。

用javascript加载的页面的问题似乎在于,浏览器接收到页面内容,并且在最初解释并呈现页面内容之后,对于浏览器而言,文档已准备就绪

通过javascript的请求不会更改(无法更改?)getPageSource()

因此,在最初加载并呈现页面之后,其他一切都是“公正”的dom操纵

有人建议只要到达页面末尾和/或在页面上找到某个元素就向下滚动

但是

让我们说您必须向下滚动50,000像素到页面末尾,如果以前的元素被javascript删除,您将永远不会一次获得“整个”源代码

在我看来,您必须问自己一个问题,您想要实现什么

对我来说,类似以下代码的作品:

document.readyState