gpt4 book ai didi

javascript - 如何防止 Javascript 改变 Selenium 中的页面?如何下载原始页面源代码?

转载 作者:太空宇宙 更新时间:2023-11-04 02:32:41 26 4
gpt4 key购买 nike

使用 Selenium 来自动化测试,而是自动保存注入(inject)内容的 AJAX 页面,即使它们需要事先进行身份验证才能访问。

我尝试过

tl;dr:我尝试了多种使用 AJAX 下载网站的工具,但都放弃了,因为它们很难使用或根本不起作用。在尝试了 WebHTTrack 后,我转而使用 Selenium(其 GUI 无法在我的 Ubuntu 机器上启动 + 在交互终端模式下提供身份验证很头疼), wget (它没有下载我的页面上包含的任何样式表脚本,请参阅底部我尝试使用 wget 进行的操作)...然后我最终放弃了 promising post关于使用名为 Crowbar 的 Mozilla XULRunner AJAX 抓取工具,我只是遇到了段错误。所以...

最终在 NodeJS 和 Selenium-WebdriverJS 中制作了我自己的坏东西

我的 NodeJS 脚本使用 selenium-webdriver npm module这是 "officially supported by the main project"至:

  • 提供登录信息 + 执行必要的按钮单击和键入操作以进行身份​​验证
  • 下载目标页面引用的所有 JS 和 CSS
  • 下载目标页面原JS/CSS文件链接更改为本地文件路径

现在,当我在本地查看测试页面时,我会看到许多页面元素的两倍,因为目标站点每次加载时都会将 HTML 片段加载到页面中。我现在用它来下载我的目标页面:

var $;
var getTarget = function () {
driver.getPageSource().then(function (source) {
$ = cheerio.load(source.toString());
});
};

var targetHtmlDest = 'test.html';
var writeTarget = function () {
fs.writeFile(targetHtmlDest, $.html());
}

driver.get(targetSite)
.then(authenticate)
.then(getRoot)
.then(downloadResources)
.then(writeRoot);
driver.quit();

问题是我得到的页面源是已经修改的页面源,而不是原始的。尝试运行alert("x");window.stop(); driver.executeAsyncScript() and driver.executeScript() 内什么也没做。

最佳答案

也许使用 Curl 获取页面(您可以在命令中通过身份验证)将为您提供裸露的源代码?否则,您可以在测试浏览器上关闭 JavaScript 以防止触发 JS 操作。

关于javascript - 如何防止 Javascript 改变 Selenium 中的页面?如何下载原始页面源代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25173294/

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