标签: phantomjs

用Selenium测试AngularJS

我在堆栈ASP MVC + AngularJS上有一个SPA应用程序,我想测试UI.现在我正在尝试使用PhantomJS和WebKit驱动程序的Selenium.

这是一个示例测试页面 - 具有单个元素的视图.列表项<li>从服务器动态加载,并由Angular限制.

<div id="items">
    <li>text</li>
    <li>text2</li>
</div>
Run Code Online (Sandbox Code Playgroud)

我正在尝试通过测试,并且此行中存在错误:

_driver.FindElements(By.TagName('li'))
Run Code Online (Sandbox Code Playgroud)

此时没有加载的元素,_driver.PageSource不包含元素.

我该如何等待加载项目?请不要建议Thread.Sleep()

selenium end-to-end c#-4.0 phantomjs angularjs

27
推荐指数
4
解决办法
4万
查看次数

PhantomJS不发送身份验证标头

我正在尝试在PhantomJS中打开一个需要HTTP身份验证的网页.我的脚本基于loadspeed.js示例:

var page = require('webpage').create(),
    t, address;
page.settings.userName = "user";
page.settings.password = "password";
if (phantom.args.length === 0) {
  console.log('Usage: loadspeed.js <some URL>');
  phantom.exit();
} else {
  t = Date.now();
  address = phantom.args[0];
  page.open(address, function (status) {
      if (status !== 'success') {
          console.log('FAIL to load the address');
      } else {
          t = Date.now() - t;
          console.log('Loading time ' + t + ' msec');
          page.render('page.jpg');
      }
      phantom.exit();
  });
}
Run Code Online (Sandbox Code Playgroud)

我可以从渲染的page.jpg看到我每次都得到401.我还使用Wireshark跟踪HTTP会话,这表明在给定URL的GET请求中没有发送认证头.

我在这做错了什么?我刚刚开始使用PhantomJS,但我整晚都在寻找并且没有得到太多...

javascript http phantomjs

26
推荐指数
2
解决办法
2万
查看次数

如何在phantomjs中等待元素可见性

用户点击此链接:

<span onclick="slow_function_that_fills_the_panel(); $('#panel').show();">
Run Code Online (Sandbox Code Playgroud)

现在我正在模拟phantomjs中的点击:

page.evaluate(
  function() { $("#panel").click(); }
);
console.log('SUCCESS');
phantom.exit();
Run Code Online (Sandbox Code Playgroud)

Phantom在慢速函数结束执行之前退出,DIV变为可见.我该如何实施等待?

javascript jquery phantomjs

26
推荐指数
3
解决办法
3万
查看次数

如何在PhantomJS中处理PDF分页

我正在使用PhantomJS从html创建PDF.

它工作正常,但我无法找到如何使用分页; 我想在文档中为每个div创建一个页面,但是我在文档中找不到任何内容.关于分页.

如果我的文档很短,它只会生成一个页面,如果它更大,它会创建一个第二个空页面,而我的内容在第一个页面中变得很长.

任何的想法 ?(我正在为nodeJS使用phantomJS节点模块)

pdf pdf-generation node.js phantomjs

26
推荐指数
1
解决办法
2万
查看次数

如何禁用或更改ghostdriver.log的路径?

问题是直截了当的,但有些背景可能有所帮助.

我正在尝试使用selenium和phantomjs作为下载程序来部署scrapy.但问题是它在尝试部署时继续说权限被拒绝.所以我想改变ghostdriver.log的路径或者只是禁用它.看着phantomjs -h和ghostdriver github页面我找不到答案,我的朋友google也让我失望了.

$ scrapy deploy
Building egg of crawler-1370960743
'build/scripts-2.7' does not exist -- can't clean it
zip_safe flag not set; analyzing archive contents...
tests.fake_responses.__init__: module references __file__
Deploying crawler-1370960743 to http://localhost:6800/addversion.json
Server response (200):
Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.7/scrapyd/webservice.py", line 18, in render
    return JsonResource.render(self, txrequest)
  File "/usr/lib/pymodules/python2.7/scrapy/utils/txweb.py", line 10, in render
    r = resource.Resource.render(self, txrequest)
  File "/usr/lib/python2.7/dist-packages/twisted/web/resource.py", line 216, in render
    return m(request)
  File "/usr/lib/pymodules/python2.7/scrapyd/webservice.py", line 66, in render_POST
    spiders = get_spider_list(project)
  File "/usr/lib/pymodules/python2.7/scrapyd/utils.py", …
Run Code Online (Sandbox Code Playgroud)

scrapy phantomjs ghostdriver

26
推荐指数
2
解决办法
1万
查看次数

Phantomjs死于高内存消耗

我们正在使用phantomjs在我们的TFS构建服务器上运行我们的qunit测试页面.我们的测试运行器版本是根据以下示例构建的

https://github.com/ariya/phantomjs/blob/master/examples/run-qunit.js

在一段时间内,测试次数从数百次增加到数次,在晴朗的日子里,幻影开始崩溃.它真的死了说上传转储,当你看到转储它0kb!

当我们在进程资源管理器上仔细研究它时,我们发现phantomjs的内存消耗不断上升,因为phantomjs运行测试并最终崩溃到833MB.

是的,Chrome和IE正在使用相同数量的内存!是的 - 是的,我们的测试正在泄漏内存:(.我们确实修复了它,内存利用率在Chrome和IE上降低了50%,我们预计phantomjs现在可以处理它.但是,不,phantomjs仍然会崩溃,进程资源管理器显示相同的内存消费.

http://phantomjs.org/api/webpage/method/close.html

根据上面的文档,phantomjs只是在关闭时释放堆分配?这可能是我们的固定测试在chrome上消耗更少内存而不是phantomjs的原因吗?最后如何解决这个问题?如何让phantomjs保持垃圾收集javascript对象以减少堆分配?

更新1 - 07/28

我们做了一个工作.我修改了我的脚本以按模块执行我的测试模块.在执行模块的所有测试之后的循环中,我调用page.close,以便为每个模块释放内存,并且永远不会继续构建死对象堆.因为它是一个解决方法而不是解决方案,因此不会关闭此问题.希望创作者有时会解决这个问题.

javascript tfs memory-leaks phantomjs

26
推荐指数
1
解决办法
1万
查看次数

您的平台上没有PhantomJS浏览器的二进制文件.请设置"PHANTOMJS_BIN"env变量

我的package.json看起来像这样..

"karma-phantomjs-launcher": "^0.1.4",
"karma-safari-launcher": "^0.1.1",
"karma-sinon-chai": "~0.2.0",
"karma-spec-reporter": "~0.0.16",
"mocha": "~1.20.1"
Run Code Online (Sandbox Code Playgroud)

我的npm版本是2.2.0

当我进行业力测试时,我会得到这个 - 业力开始my.conf.js

phantomjs karma-runner karma-mocha mocha-phantomjs karma-coverage

26
推荐指数
3
解决办法
2万
查看次数

如何调试Chutzpah/PhantomJS正在执行的JavaScript

我正在使用Chutzpah来执行我的JavaScript单元测试.

我引用了我的源文件的路径,下面有一系列的测试.Visual Studio中的Text Explorer列出了我的测试,我可以直接从IDE执行它们,所以一切似乎都正常工作.

但是,我想进入运行测试时正在执行的源代码.

这可能吗?

javascript debugging unit-testing phantomjs chutzpah

25
推荐指数
1
解决办法
7631
查看次数

Phantom.js捕获所有AJAX吗?

我有一个拥有大量AJAX的骨干应用程序.(每个页面加载导致5-6个ajax调用)因为我在这些视图中有很多视图和内部视图,

如果我运行Phantom.js,我可以获得最终的HTML结果吗?

最终结果是用户在所有ajax调用运行后看到的内容.

javascript backbone.js phantomjs

25
推荐指数
2
解决办法
3万
查看次数

替代PhantomJS进行测试

我目前正在尝试为CI(Hudson)构建一个小测试套件.我编写了一个复杂的脚本,动态调用其他脚本并填充给定的DIV元素.

我的Selenium测试适用于琐碎的例子(加载www.google.com,搜索q-Element等)

但是当我尝试在我的PhantomJS实例中运行与Firefox驱动程序一起运行的复杂测试时,它会崩溃.发生了段错误.

我的问题是,如何为我的前端JS编写测试,该测试适用于运行(无头)的Hudson-Server.

或者有没有办法调试导致段错误的原因?

javascript testing phantomjs

25
推荐指数
4
解决办法
3万
查看次数