2015-01-14 1 views
1

Это совершенно ясно. У меня есть массив с некоторыми ссылками, и я хочу построить цикл, чтобы попробовать все из них, но проблема в том, что ссылка всегда 3. Это означает, что она считывает последнее число в моем массиве. Зачем? Как я могу это исправить?Добавить два параметра в функцию в «затем» транспортир

var categories = ['1','2','3']; 
for(var i = 0; i < categories.length; i++) { 
    var link = '/'+categories[i]; 
    browser.get(link); 
    browser.sleep(2000); 
    browser.driver.getCurrentUrl().then(function(url) { 
     expect(url).toMatch(link); 
    }); 
} 

и у меня есть список divs, и я хочу читать случайно информацию от них. Поэтому я сделал следующее

chosenOffer   = Math.floor((Math.random() * count) + 1); 
offer    = element.all(by.className('offer')).get(chosenOffer); 

Но он всегда показывает сообщение об ошибке объекта chosenOffer ...

ответ

3

Это классическая проблема замыкания, которая подробно описана в:

В вашем случае, просто позвольте expect() решить этот вопрос:

var categories = ['1','2','3']; 

for (var i = 0; i < categories.length; i++) { 
    var link = '/' + categories[i]; 
    browser.get(link); 
    browser.sleep(2000); 

    expect(browser.driver.getCurrentUrl()).toMatch(link); 
} 
+0

только другой вопрос выбралOffer = Math.floor ((Math.random() * count) + 1); // выберите случайное предложение todo исправить его в синтаксисе протранграфа offer = element.all (by.className ('offer')). Get (offer); почему я получаю предложение - это объект ... ошибка – dfr

+0

@dfr не могли бы вы сделать из него отдельный вопрос (если это имеет смысл)? Благодарю. – alecxe

+0

ОК, я сделаю новый, но могу ли проверить его, пожалуйста? – dfr

Смежные вопросы