从DOM上下文调用casperjs捕获(求值)
Call casperjs capture from DOM context (evaluate)
是否有任何方法可以调用casperjs方法,如捕获,当函数从评估上下文调用?
解释:我希望能够编写js脚本(qunit),可以在"真正的"浏览器或casper中运行。
样本:
function screenshot()(
//i'm runing in a "real" browser ? Then only console.log
//i'm running in casper ? Then call capser.capture()
我尝试了闭包,但失败了:
var casper = require('casper').create();
casper.start('http://google.fr/');
casper.evaluate(function(o) {
o.capture('/tmp/google.png', {
top: 100,
left: 100,
width: 500,
height: 400
});
}, {o: this});
casper.run()
TypeError: JSON.stringify cannot serialize cyclic structures.
:/modules/webpage.js:249
/Users/macbookpro/js:576 in evaluate
/Users/macbookpro/js/testClosure.js:11
我知道有一种方法可以使用console.log作为消息总线,但我正在寻找更好的解决方案。
谢谢
在PhantomJS(以及CasperJS)中,evaluate
运行在一个被监禁的环境中。只接受原始对象,即可以通过JSON.stringify
和JSON.parse
序列化的对象。
evaluate
中,您只需要将其通信回主脚本。查看PhantomJS包含的run-qunit.js
示例,该示例通过监视特定DOM元素的存在来检测测试的完成情况。
没有办法在evaluate()
中运行casper方法。这里是你的代码,修正:
var casper = require('casper').create();
casper.start('http://google.fr/', function() {
this.capture('google.png', {
top: 100,
left: 100,
width: 500,
height: 400
});
});
casper.run()
相关文章:
- 如果在代码末尾进行求值,jQuery-console.log将提供空数组
- HEAD中LINK和STYLE元素的求值顺序
- 聚合物绑定条件属性和求值属性
- javascript/jquery-避免重复对条件求值
- 为什么-0===0的求值结果为true
- 为什么下面给出的表达式在javascript中的求值结果为30
- 如何从不同范围外的元素属性中获取求值表达式
- myFunc=function(){}应该立即在Javascript中求值
- 针对常量求值的角度表达式
- AngularJS-在$event.stopPropagation之后停止ng-click表达式求值
- Javascript:附加字符串中的事件,闭包中的变量求值
- 如何使用Angular 1.5组件将属性求值为字符串,这是一个自定义函数
- AngularJS表达式未求值
- 为什么我的JS"如果“;语句的求值结果总是为false
- eval函数-求值顺序
- LESS 文件中的 JavaScript 求值错误
- 如何从传递给 CasperJS 中求值的函数调用另一个函数
- 如何控制 Angular 指令的求值顺序
- Angularjs 指令不求值 ~
- 从DOM上下文调用casperjs捕获(求值)