gpt4 book ai didi

java - Selenium - driver.getPageSource() 与从浏览器查看的源不同

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:12:00 25 4
gpt4 key购买 nike

我正在尝试使用 selenium 将指定 URL 中的源代码捕获到 HTML 文件中,但我不知道为什么,我没有获得我们从浏览器中看到的确切源代码。

下面是我在 HTML 文件中捕获源代码的 java 代码

private static void getHTMLSourceFromURL(String url, String fileName) {

WebDriver driver = new FirefoxDriver();
driver.get(url);

try {
Thread.sleep(5000); //the page gets loaded completely

List<String> pageSource = new ArrayList<String>(Arrays.asList(driver.getPageSource().split("\n")));

writeTextToFile(pageSource, originalFile);

} catch (InterruptedException e) {
e.printStackTrace();
}

System.out.println("quitting webdriver");
driver.quit();
}

/**
* creates file with fileName and writes the content
*
* @param content
* @param fileName
*/
private static void writeTextToFile(List<String> content, String fileName) {
PrintWriter pw = null;
String outputFolder = ".";
File output = null;
try {
File dir = new File(outputFolder + '/' + "HTML Sources");
if (!dir.exists()) {
boolean success = dir.mkdirs();
if (success == false) {
try {
throw new Exception(dir + " could not be created");
} catch (Exception e) {
e.printStackTrace();
}
}
}

output = new File(dir + "/" + fileName);
if (!output.exists()) {
try {
output.createNewFile();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
pw = new PrintWriter(new FileWriter(output, true));
for (String line : content) {
pw.print(line);
pw.print("\n");
}
} catch (IOException ioe) {
ioe.printStackTrace();
} finally {
pw.close();
}

}

有人能解释一下为什么会发生这种情况吗? WebDriver 是如何渲染页面的?以及浏览器如何显示来源?

最佳答案

有几个地方可以获取源码,你可以试试

String pageSource=driver.findElement(By.tagName("body")).getText();

看看会发生什么。

通常您不需要等待页面加载。Selenium 会自动完成,除非您有单独的 Javascript/Ajax 部分。

您可能想添加您看到的差异,以便我们理解您的真正意思。

Webdriver 不会自己呈现页面,它只是按照浏览器看到的那样呈现它。

关于java - Selenium - driver.getPageSource() 与从浏览器查看的源不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19358658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com