我目前正在深入研究CasperJS,并且非常喜欢它。然而,也许这是我在文档中遗漏的一些东西,我似乎在使用casper.capture()时遇到了问题。我目前已经安装了我的工具,以便在测试失败时捕获,并将其放在一个单独的安装模块中,如下所示
function captureFailure(filename){
casper.test.on("fail", function(failure){
casper.viewport(1280, 1024);
casper.capture("failedScreenshots/Failure-"+filename+".jpg", {
top: 0,
left: 0,
width: 1280,
height: 1024
});
});
}
exports.captureFailure = captureFailure;然后,在我的测试中,如下所示:
. . .
// setup
setup.login();
// test
casper.test.begin("Complete new social campaign flow with image as a signed in user.", 16, function suite(test) {
// setup captureFailure
setup.captureFailure("SocialFlowImage");
casper.start(data.baseURL+'/campaigns/', function(){
console.log("Campaign page loaded");
this.click(campaignCreate);
casper.waitForSelector(socialCampaignCreateModal, function(){
test.assertExists(socialCampaignCreateModal, 'Modal pops up');
test.assertTextExists('Deal', 'Deal button exists');
test.assertTextExists('Marketing Email', 'Marketing Email button exists');
test.assertTextExists('Facebook', 'Facebook button exists');
});
});
. . .这在很大程度上是独立的,但当我连续运行所有测试以测试多个失败时,屏幕截图就会被覆盖。按时间顺序,它看起来是这样的:
测试1 ->测试1失败->捕获截图1 ->测试2 ->测试2失败->捕获截图2然后覆盖截图1
这导致了两个相同的截图,但不同的命名惯例。
有什么想法吗?
发布于 2016-06-17 15:03:01
计算出我在"fail“事件上有重叠的事件处理程序。为此,更改了casperjs测试样式,使其包含带有setUp和tearDown函数的测试对象,并通过以下操作删除事件句柄
casper.test.removeListener("fail", casper.test.listeners("fail")[0]);
这有点麻烦,但我的自定义事件处理程序传递了一个filename arg,以获得唯一的屏幕快照名称,并且在调试/识别哪个测试运行了什么时更容易。因此,由于我的setUp实际上有一个附加它的匿名函数,所以我不得不安装它。
https://stackoverflow.com/questions/37864024
复制相似问题