Selenium Java-通过JavascriptExecutor获取页面源代码

Selenium Java - Fetching page source via JavascriptExecutor

本文关键字:源代码 获取 JavascriptExecutor Java- 通过 Selenium      更新时间:2023-09-26

我想在页面因一些ajax请求而更改后读取页面的源代码。由于我的想法不多了,我尝试了JavaScript,但executeScript()函数总是返回null。任何帮助都将不胜感激。

我使用FirefoxDriver。我的代码如下:

Object test = ((JavascriptExecutor) firefox).executeScript("function getHTML(){ return document.body.innerHTML;} getHTML();");
System.out.println(test);

您需要从脚本返回一些东西

Object test = ((JavascriptExecutor) firefox).executeScript("return document.body.innerHTML;");

我假设dom没有处于就绪状态,并且您试图获取的速度太快。我稍微修改了alecxe的答案,添加了额外的显式等待,以确保dom处于就绪状态。此程序将等待10秒,以确保dom处于就绪状态。

Wait<WebDriver> wait = new WebDriverWait(driver,10);
wait.until(new Function<WebDriver, Boolean>() {
    public Boolean apply(WebDriver driver) {
        return ((JavascriptExecutor) driver).executeScript("return document.readyState;").equals("complete");
    }
});
Object test = ((JavascriptExecutor) driver).executeScript("return document.body.innerHTML;");