gpt4 book ai didi

javascript - 循环浏览页面以在 Protractor 中创建测试

转载 作者:行者123 更新时间:2023-11-28 05:55:09 24 4
gpt4 key购买 nike

我正在尝试创建一个循环来浏览多个页面,并为每个页面创建略有不同的测试。它是异步的这一事实让我感到困惑,而且我一直无法找到一种方法来做到这一点。尝试仅使用普通循环会导致页面始终设置为数组中的最后一页。我尝试过以几种不同的方式使用闭包,但没有任何运气。我认为这是正确的路线。我看过this问题,它给了我一些好主意,但我仍然无法让事情发挥作用。

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]();
}

最佳答案

如果您有一组页面需要应用相同的测试,则可以使用闭包来解决 Protractor 异步 promise ,以在循环中创建测试。

要编写测试循环,您需要执行以下操作:

// 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);
});
});

关于javascript - 循环浏览页面以在 Protractor 中创建测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37769962/

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