Javascript 在量角器中循环页面以创建测试
我试图创建一个循环,在几个页面中导航,并为每个页面创建稍微不同的测试。它是异步的这一事实让我很反感,我还没有找到一种方法来实现它。尝试仅使用普通循环会导致页面始终设置为数组中的最后一页。我尝试过用几种不同的方法来使用闭包,但没有任何运气。我认为这是正确的路线。我已经研究了这个问题,它给了我一些好的想法,但我仍然无法让事情顺利进行Javascript 在量角器中循环页面以创建测试,javascript,selenium,webdriver,protractor,Javascript,Selenium,Webdriver,Protractor,我试图创建一个循环,在几个页面中导航,并为每个页面创建稍微不同的测试。它是异步的这一事实让我很反感,我还没有找到一种方法来实现它。尝试仅使用普通循环会导致页面始终设置为数组中的最后一页。我尝试过用几种不同的方法来使用闭包,但没有任何运气。我认为这是正确的路线。我已经研究了这个问题,它给了我一些好的想法,但我仍然无法让事情顺利进行 var bs = new BasicSteps(); describe("Some description", function() { var pages
var bs = new BasicSteps();
describe("Some description", function() {
var pages = ['/page1', '/page2', '/page3'];
var i = 0;
beforeEach(function() {
bs.navigate(pages[i]);
browser.sleep(2000);
i++;
});
for(page in pages) {
// Code for the spec
it('Some spec', function() {
// Some code for the tests
if(page == 1) {
console.log("page1");
}
else if(page == 2) {
console.log("Page2");
}
else if(page == 3) {
console.log("Page3");
}
});
}
});
这会打印三次Page3
,因为循环几乎立即执行。我尝试过使用闭包,但这会导致一些模糊的错误,并在任何操作运行之前崩溃
var funcs = [];
function createfunc(page) {
return function() {
// Code for the spec
});
}
for(var page = 0; page < pages.length; page++) {
funcs[page] = createfunc(page);
}
for(var j = 0; j < funcs.length; j++) {
funcs[j]();
}
var funcs=[];
函数createfunc(第页){
返回函数(){
//规范代码
});
}
对于(var page=0;page
如果有一组页面需要对其应用相同的测试,则可以使用闭包绕过量角器在循环中创建测试
要编写测试循环,请执行以下操作:
// Array of objects with name and URL of each page
var pages = [{'name': 'page1', 'url': 'someurl.com/page1'},
{'name': 'page2', 'url': 'someurl.com/page2'}];
describe("Some description", function(){
function specBlock(curPage) {
describe(curPage.name, function(){
it('Some test', function () {
// Test goes here
});
});
};
createSpecBlock = function(specBlock) {
return specBlock;
}
var funcCall = createSpecBlock(specBlock);
pages.forEach(function(curPage){
funcCall(curPage);
});
});
如果有一组页面需要对其应用相同的测试,则可以使用闭包来处理量角器,从而在循环中创建测试 要编写测试循环,请执行以下操作:
// Array of objects with name and URL of each page
var pages = [{'name': 'page1', 'url': 'someurl.com/page1'},
{'name': 'page2', 'url': 'someurl.com/page2'}];
describe("Some description", function(){
function specBlock(curPage) {
describe(curPage.name, function(){
it('Some test', function () {
// Test goes here
});
});
};
createSpecBlock = function(specBlock) {
return specBlock;
}
var funcCall = createSpecBlock(specBlock);
pages.forEach(function(curPage){
funcCall(curPage);
});
});