В настоящее время я использую WebDriver.js для запуска автоматического тестирования на браузере. Моя цель - взять все hrefs в данном div, открыть их и проверить название страницы, на которую указывает ссылка. Для этого я делаю следующее:Проверить название нескольких страниц в Selenium
for (var i = 0; i < hrefs.length; i++) {
var href = hrefs[i],
site_name = sites_names[i];
driver.get(href);
driver.getTitle().then(function(title) {
assert.equal(title, site_name);
});
}
Моя проблема заключается в том, что get
и getTitle
являются асинхронные методы и, таким образом, когда я звоню getTitle
страница уже изменилась, и, таким образом, утверждение терпит неудачу. Какова наилучшая модель/решение для подобных ситуаций?
Спасибо за ваш ответ. Проблема не в этом. Позвольте мне объяснить это лучше: предположим, у меня есть 2 массива один с hrefs ['google.com', ..., 'foobaz.bar'] и один с ожидаемыми заголовками ['Google', ... 'Foo Bar Inc . ']. Моя проблема заключается в том, что 'get' и' getTitle' не синхронизированы, и, таким образом, я заканчиваю загрузкой страницы foobaz.bar и проверкой названия «Google». –
использовать список или любые коллекции по массиву – Babulu
@MarcelloRomanelli В качестве примера, если hrefs [0] = 'google.com' и site_names [0] = 'Google', то единственный возможный способ, который будет вызывать, если тест не ждет достаточно долго, чтобы страница загружалась, прежде чем проверять заголовок. Как упоминалось ранее, завершение вызова driver.getTitle() в ожидании должно решить проблему. – shri046