gpt4 book ai didi

node.js - CasperJS,与测试框架并行浏览

转载 作者:搜寻专家 更新时间:2023-10-31 22:20:31 24 4
gpt4 key购买 nike

问题:我想知道是否可以在一个脚本文件中使用测试框架进行并行浏览,因此可以使用测试器模块和 casperjs 测试命令。

我见过一些人创建了两个 casper 实例: CasperJS simultaneous requestshttps://groups.google.com/forum/#!topic/casperjs/Scx4Cjqp7hE ,但正如文档中所述,我们无法在测试脚本中创建新的 casper 实例。

所以我尝试用一​​个 casper 测试脚本做一些类似的简单示例(只需复制并执行它就可以了):

var url1 = "http://casperjs.readthedocs.org/en/latest/testing.html"
,url2 = "http://casperjs.readthedocs.org/en/latest/testing.html"
;

var casperActions = {
process1: function () {
casper.test.begin('\n********* First processus with our test suite : ***********\n', function suite(test) {
"use strict";
casper.start()
.thenOpen(url1,function(){
this.echo("1","INFO");
});
casper.wait(10000,function(){
casper.test.comment("If parallel, it won't be printed before comment of the second processus !");
})
.run(function() {
this.test.comment('----------------------- First processus over ------------------------\n');
test.done();
});
});
},
process2: function () {
casper.test.begin('\n********* Second processus with our test suite : ***********\n', function suite(test) {
"use strict";
casper.start()
.thenOpen(url1,function(){
this.echo("2","INFO");
});
casper.test.comment("Hi, if parallel, i'm first !");
casper.run(function() {
this.test.comment('----------------------- Second processus over ------------------------\n');
test.done();
});
});
}
};

['process1', 'process2'].forEach(function(href) {
casperActions[href]();
});

但不是并行的,它们是一个一个执行的。目前,我使用子进程进行一些并行浏览,但 Node 不在文件本身中。因此,如果您将我之前的代码拆分为两个文件 -proc1.js、proc2.js-(只是两个场景 ->casper.test.begin{...}),并通过 Node 启动下面的代码,类似的东西将使用 Linux,我必须搜索 Windows 的等效语法- :

var exec = require("child_process").exec
;

exec('casperjs test proc1.js',function(err,stdout,stderr){
console.log('stdout: ' + stdout);
console.log('endprocess1');
});
exec('casperjs test proc2.js',function(err,stdout,stderr){
console.log('stdout: ' + stdout);
console.log('endprocess2');
});

我的问题是重定向和打开新 url 很长,所以我希望其中一些并行执行。我可以做 XXX 文件并与 Node 并行启动它们,但我不希望 XXX 文件有 5 行代码,所以如果有人成功(如果可能的话)在没有 Node 的同一个测试文件中并行打开 url(所以没有多进程),请教我!

我想知道链接指令之间有什么区别,或者每次都重新使用 casper 对象:

所以在那之间:

casper.test.begin('\n********* First processus with our test suite : ***********\n', function suite(test) {
"use strict";
casper.start()
.thenOpen(url1,function(){
this.echo("1","INFO");
})
.wait(10000,function(){
casper.test.comment("If parallel, it won't be print before comment of the second processus !");
})
.run(function() {
this.test.comment('----------------------- First processus over ------------------------\n');
test.done();
});
});

还有:

casper.test.begin('\n********* First processus with our test suite : ***********\n', function suite(test) {
"use strict";
casper.start();
casper.thenOpen(url1,function(){
this.echo("1","INFO");
});
casper.wait(10000,function(){
casper.test.comment("If parallel, it won't be print before comment of the second processus !");
})
casper.run(function() {
this.test.comment('----------------------- First processus over ------------------------\n');
test.done();
});
});

链接我的指令,如果我的步骤之一失败( promise 被拒绝)而不是执行每个 casper 步骤,它会阻止所有链吗?

因此,将指令与相关步骤 [如 thenClick(selector)] 链接起来并使用具有独立步骤(如打开新 url)的 casper 对象会更好,不是吗?

编辑:我试过,如果一个步骤失败,链接与否,它将停止所有后续步骤,所以我看不出是否使用链接步骤的区别......

最佳答案

好吧,每次都链接或使用 casper 对象只是个人喜好问题,它的作用是一样的,我们不能在测试脚本中启动多个 casper 实例。如果你有一个打开一些链接的循环,你将不得不等待每个页面被顺序加载。

要使用测试框架启动并行浏览,您必须执行多个进程,因此使用 Node 可以解决问题。

经过挖掘,我终于拆分了重定向太多的文件,不超过我无法拆分的主要场景。包含 15 个文件的文件夹在 2/4 分钟内在本地计算机上并行执行。

关于node.js - CasperJS,与测试框架并行浏览,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22513730/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com