javascript - 如何使用 Chutzpah 更改底层 Phantomjs 对象设置?

标签 javascript phantomjs user-agent qunit chutzpah

我们使用 Chutzpah 测试适配器在 Visual Studio 中运行一些 QUnit javascript 测试。一切都工作正常,直到我们最近更改了 api(由 js 文件测试的 API),并在 UserAgent http header 上添加了一些验证。当我尝试更新测试以更改/模拟用户代理时,我意识到即使通过 overriding the default browser property 也无法直接实现.

经过几天的搜寻,我终于知道到底发生了什么。 Chutzpah 正在创建一个 phantomjs page运行测试文件的对象。这是在位于 Chutzpah adapter installation path 的基本 javascript 文件 (chutzpahRunner.js) 上完成的。 。这些是文件中的最后几行,有效地启动测试:

...
// Allows local files to make ajax calls to remote urls
page.settings.localToRemoteUrlAccessEnabled = true; //(default false) 

// Stops all security (for example you can access content in other domain IFrames)
page.settings.webSecurityEnabled = false; //(default true)

page.open(testFile, pageOpenHandler);
...

Phatomjs 支持通过在页面 settings object 中指定来更改用户代理 header 。如果我在我的计算机中编辑这个 chutzpahRunner.js 文件,并在那里手动设置用户代理,如下所示:

page.settings.userAgent = "MyCustomUserAgent";

我的测试再次开始工作。问题是这并不在项目本身中,因此无法与团队的其他成员共享。

是否可以更改 Chutzpah 创建的 phantomjs 对象的属性来运行测试?我想从我自己的测试中更改它们,或者从我可以嵌入管道的另一个脚本文件中更改它们。

最佳答案

如果不更改 Chutzpah 中的代码,就无法在 PhantomJS 对象上设置这些属性。请通过 https://github.com/mmanela/chutzpah 提交问题请求此功能,然后 fork/patch Chutzpah 来添加它(或者等待项目的开发人员希望能够实现此功能)。

更新: 我推了一个fix for this issue 。发布后,您可以在 Chutzpah.json 文件中使用以下内容:

{
  "userAgent": "myUserAgent"
}

关于javascript - 如何使用 Chutzpah 更改底层 Phantomjs 对象设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26467096/

相关文章:

javascript - 使用 Javascript 将文件拆分为 block

JavaScript 函数返回事件

javascript - Phantomjs:在将其作为网页打开之前修改html dom

iphone - 什么是 iOS 6 用户代理字符串?

javascript - JS - 我怎样才能实现重力?

typescript - 使用 webpack 在 Aurelia 中包含获取 polyfill

phantomjs - CasperJS 文件下载在 30 秒后超时

browser - 为什么 Chrome 和 IE 将 "Mozilla 5.0"放在发送到服务器的 User-Agent 中?

iphone - 在 .htaccess/apache 中检测 iPhone 浏览器并重定向到 iPhone 站点

javascript - 无法制作隐藏/可见的错误消息