Я пытаюсь создать функцию, которую я могу вызвать из любого теста, который будет смотреть на передаваемый элемент (текст ссылки, Css Selector, Xpath, ID), щелкнуть по элементу и затем проверить URL-адрес, который появляется после его загрузки. Проблема, с которой я сталкиваюсь, заключается в том, что она возвращается до завершения функции.Как дождаться завершения функции перед возвратом?
Я знаю, что мне нужно реализовать async и обратный вызов, но мне сложно понять структуру.
clickIDverifyURL: function clickByID (elementVar, elementURL){
var rem = this.remote;
// if statements to look at elementVar and select the right one.. example:
// rem.setFindByTimeout(10000)
// .findByXpath (elementVar)
// .click()
// .end()
return this.remote
// if I code it right, I shouldn't need this sleep right?
.sleep(30000)
.getCurrentUrl()
.then(function(currURL) {
console.log(currURL);
try {
assert.strictEqual(currURL, elementURL, "This test checks to see if the current URL is correct.")
}
catch (e)
{
console.log(e)
}
});
}
Цените любую помощь или комментарии.
Благодаря jason0x43. У меня есть лучшее представление о том, как его структурировать сейчас. Было бы целесообразно создать отдельный метод для типа элемента? Я хочу иметь возможность использовать регулярное выражение для разбивки первых символов, чтобы разработчики могли просто передать нам несколько различных элементов (либо селектор css, xpath, либо div id). Будет ли идти: 'myModule.findElement ('someselector ') .then (myModule.clickIDverifyURL (' expectedURL'))' если да, то, что должно быть findElement возвращение для поддержания цепи? – whatthestack
Для этого вы можете сделать что-то вроде ... um, комментарий для этого не подходит. Я обновлю ответ ... – jason0x43