我们在JavaScript上的开源项目enchant.js中引入了带有travisCI的CI系统。https://github.com/wise9/enchant.js我们喜欢qunit测试,我们使用grunt.js(npm)运行它们,但它在TravisCI上失败并出现如下错误:PhantomJStimedout,possiblyduetoamissingQUnitstart()call.Use--forcetocontinue.完整的错误信息在这里:https://travis-ci.org/wise9/enchant.js/builds/4016842奇怪的是,每次我运行grunt
我正在使用Selenium的node.jsAPI针对一系列网页运行PhantomJS实例。我用来在页面上执行操作的代码工作正常,但似乎一次只能运行一个Selenium/PhantomJS实例。这个函数从同一个模块被多次调用,并在客户端处理分页的网上商店中逐步浏览页面(这就是为什么我需要Selenium/PhantomJS环境-从每个页面提取数据)。再一次,代码本身运行良好,但不能并行执行。可能是什么原因造成的?module.exports=function(crawler,page,parsePage,done){"usestrict";var_=require("lodash"),f
是否可以在不手动提交表单的情况下使用PhantomJS将文件上传到特定页面?我认为使用Content-Type:multipart/form-data是可能的。https://github.com/ariya/phantomjs/blob/master/examples/imagebin.js上的示例工作正常,但我想直接发送POST请求中的文件而不与任何元素交互。有什么建议吗?非常感谢 最佳答案 文件上传可以通过AJAX完成(从xhr2开始-如果您需要支持旧版浏览器,请使用类似jQuery-File-Upload的东西;有agood
我刚刚开始习惯PhantomJs,到目前为止它真的很酷。我正在尝试抓取网站并获取有关网站上产品的数据。每个产品页面都加载了可见产品的默认颜色。当您单击色样时,它会通过运行一个函数来换出新颜色。每个可点击的色样元素如下所示:getColor更新该颜色的缩略图和价格。每种可用颜色(swatch_0、swatch_1等)的id递增,传递给getColor的参数也递增。我想用PhantomJs遍历每种颜色并为每种颜色提取相关数据。我已经加载了页面,加载了jQuery,并且可以提取初始加载颜色的数据,但似乎没有任何东西允许我执行点击事件。这是我正在尝试的:page.evalaute(functi
我正在使用PhantomJS将可变高度的网页导出为pdf。由于pdf可以具有任何页面大小(尽管更像是比率,因为它是矢量的),我想以一种在pdf中创建单个页面以适合整个网页的方式导出它。幸运的是,使用evaluatePhantomJS方法我可以轻松检测页面高度page.includeJs('jquery.js',function(){varpageHeight=page.evaluate(function(){return$('#content').height();});});但是,我不确定如何利用它来发挥我的优势。viewportSize似乎不会以任何方式影响这一点,因为我没有渲染视
我正在使用PhantomJS截取网页。然而,该库调用托管的jQuery文件以在页面DOM中注入(inject)jQuery功能以允许进行一些操作。在这里看到:http://phantomjs.org/api/webpage/method/include-js.html代码如下所示:if(loaded){page.includeJs("http://code.jquery.com/jquery-1.8.3.min.js",function(){...我不想对JS进行外部调用,因为(a)它速度较慢且(b)它不可靠。我想使用本地副本并设置该路径,但它没有加载。page.includeJs("
我目前正在尝试使用PhantomJS和CasperJS来制作端到端测试。我遇到的是PhantomJS缺乏promise的情况。目前我们的项目实现了它们。该应用程序仅在原生支持promises的GoogleChrome中使用。在运行我的测试时我收到错误:错误:ReferenceError:找不到变量:Promise这似乎是因为PhantomJS中当前版本的Webkit不支持promise。我意识到SlimerJS确实通过Gecko获得了这种支持,但是我们的应用程序在Chrome中运行,因此我希望在Webkit中进行测试。我一直在努力解决的问题是将ES6promisepolyfill注入(
我有一个简单的目标:使用phantom.js(开箱即用)或casper.js(简单易用)加载网页,但使用代理并从列表中轮换它,如果当前列表是坏的(即网页加载失败或类似的事情)。我知道casper.js有--proxy参数,但它要求用户只指定一个代理并在运行时使用它。问题#1是:如何以编程方式动态旋转代理?我做了一些研究,发现了这个node-requester但它没有与casper.js集成。我试图只提取出code中的代理功能。但简而言之并没有真正理解它是如何工作的(我猜我没那么聪明)。那么问题#2:是否有一些简单的代理轮换实现可以与phantom.js或casper.js一起使用?虽然
我在使用PhantomJS触发滚动延迟加载时遇到问题。以前的答案(甚至接受的答案)都不适合我。大多数是针对旧的PhantomJS版本。其他问题-与我的问题几乎相同或相似,但答案无效或无效:notabletolazyloadinphantomjsHowtoscrolldownwithPhantomjstoloaddynamiccontenthttps://github.com/ariya/phantomjs/issues/11512他们都试图利用window.document.body.scrollTop=document.body.scrollHeight和page.evaluate(
我是PhantomJS和Javascript的新手,我正在编写一个测试加载时间的脚本,我想让它检测在测试它时是否遇到错误404/500,并在控制台日志。代码是这样的:varpage=require('webpage').create(),t,address;t=Date.now();vartestArray=['someURL'];functionloadTest(testURL){address=testURL;page.open(address,function(status){if(status!=='success'){console.log('FAILtoloadtheadd