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

时间:2015-02-05 22:19:31

标签: java javascript selenium selenium-webdriver

由于某些ajax请求,我想在页面的源代码发生变化后阅读它。由于我的想法不足,我尝试了JavaScript,但executeScript()函数始终返回 null 。任何帮助将不胜感激。

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

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

2 个答案:

答案 0 :(得分:4)

您需要从脚本中返回

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

答案 1 :(得分:1)

我假设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;");