由于某些ajax请求,我想在页面的源代码发生变化后阅读它。由于我的想法不足,我尝试了JavaScript,但executeScript()
函数始终返回 null 。任何帮助将不胜感激。
我使用FirefoxDriver
。我的代码如下:
Object test = ((JavascriptExecutor) firefox).executeScript("function getHTML(){ return document.body.innerHTML;} getHTML();");
System.out.println(test);
答案 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;");