我不使用Selenium自动化测试,但自动保存注入内容的AJAX页面,即使他们需要先验证才能访问。
tl;博士:我尝试了多种使用AJAX下载网站的工具而放弃了,因为它们难以使用或者根本无法工作。我在试用后试图使用Selenium WebHTTrack (其GUI无法在我的Ubuntu计算机上启动+在交互式终端模式下提供身份验证时非常头疼), wget
(它没有下载我页面上包含的任何样式表脚本,请参阅我用wget尝试的底部... ...然后我终于在使用Mozilla XULRunner AJAX scraper promising post之后放弃了撬棍只是对我不利。所以......
我的NodeJS脚本使用selenium-webdriver npm module "officially supported by the main project"来执行:
现在,当我在本地查看我的测试页时,我看到许多页面元素的两倍,因为目标站点每次加载时都会将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();
问题是我获得的页面源是已修改的页面源,而不是原始页面源。尝试在driver.executeAsyncScript()
and driver.executeScript()
内运行alert("x");window.stop();
不会做任何事情。
答案 0 :(得分:0)
也许使用Curl获取页面(您可以在命令中传递身份验证)将获得裸源? 否则,您可以在测试浏览器上关闭JavaScript以防止触发JS操作。