Я пытаюсь создать цикл, который перемещается по нескольким страницам, и создает тесты, которые немного отличаются для каждой страницы. Тот факт, что он асинхронный, отбрасывает меня, и я не смог найти способ сделать это. Попытка использовать только обычный цикл приводит к тому, что страница всегда устанавливается на самую последнюю страницу в массиве. Я пробовал использовать закрытие несколькими способами, но не имел никакой удачи. Я думаю, что это правильный путь. Я посмотрел на вопрос 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]();
}