首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止Javascript在Selenium中修改页面?如何下载原始页面源?

如何防止Javascript在Selenium中修改页面?如何下载原始页面源?
EN

Stack Overflow用户
提问于 2014-08-07 02:35:51
回答 1查看 191关注 0票数 1

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

我试过了

tl;dr:我尝试了多种工具来下载使用AJAX的站点,但放弃了,因为它们很难使用,或者根本不起作用。在试用WebHTTrack (它的用户界面无法在我的Ubuntu +上启动)、wget (它没有下载页面中包含的样式表脚本)、wget(它没有下载我的页面中包含的任何样式表脚本)之后使用WebHTTrack(它的GUI无法在我的Ubuntu+上启动)。然后,我终于放弃了在有前途的职位上使用一个名为乌鸦的Mozilla XULRunner AJAX刮刀,只是在我身上出了点问题。所以..。

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

我的NodeJS脚本使用selenium-webdriver模块 (即“官方支持的主要项目” )来:

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

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

代码语言:javascript
复制
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.executeScript()没有任何作用。

EN

回答 1

Stack Overflow用户

发布于 2014-11-26 17:00:55

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25173294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档