节点js selenium-webdriver将页面另存为

时间:2018-07-09 04:41:18

标签: node.js firefox selenium-webdriver

我正在Raspberry Pi(Raspbian Stretch)上使用名为selenium-webdriver的node.js包和Firefox v52.9.0。

在某个时候,我想执行Firefox GUI的“页面另存为”功能。

我在this page上找到了对类似内容的引用:

# Write the output to output.txt 
with open('output.txt', 'w') as file:
    file.write(str(browser.page_source))

这里的问题是本指南使用的是python而不是node。我不确定如何实现等效代码。

我在文档中找到了this,但是文档中没有任何示例代码,而且我不确定如何实现.write函数。谁能解释(或为我提供参考资源)如何在selenium-webdriver中实现“保存文件”功能?

值得一提的是,我需要保存的文件中包含一些AJAX和Javascript对DOM所做的修改-仅保存html文档的原始源是不可接受的,但是需要表示页面的当前状态。

以下是上下文代码:

const {Builder, By, Key, until} = require('selenium-webdriver');

(async function example() {
  let driver = await new Builder().forBrowser('firefox').build();
  try {
    await driver.get('http://localhost/mypage.html');
    await driver.sleep(10000);
    /*SOMEHOW SAVE THE PAGE TO A FILE */
  } finally {
    await driver.quit();
  }
})();

1 个答案:

答案 0 :(得分:2)

只需致电driver.getPageSource()

try {
    await driver.get('https://google.com');
    await driver.sleep(1000);
    const source = await driver.getPageSource();
    fs.writeFileSync('source.html', source);
} finally {
    await driver.quit();
}