Я пытаюсь написать функцию (используя WebdriverJS lib), которая выполняет итерацию через список элементов, проверяет имена и строит локатор xpath, соответствующий этому имени. Я упростил локаторы xpath здесь, поэтому не обращайте внимания.
Проблемы, с которыми я столкнулся, это: 1) Вызов этой функции возвращает undefined. Насколько я понимаю, это потому, что выражение возврата не на своем месте, а: 2) Поместите его в правильное место, где обычно работает синхронный код, не работает для async promises, поэтому вызов этой функции вернет тот же самый undefined, но поскольку оператор return запускается перед "driver.findElement".
Как мне использовать оператор return здесь, если я хочу получить переменную createdTask в результате вызова этой функции?
var findCreatedTask = function() {
var createdTask;
driver.findElements(By.xpath("//div[@id='Tasks_Tab']")).then(function(tasks) {
for (var index = 1; index <= tasks.length; index++) {
driver.findElement(By.xpath("//div[@id='Tasks_Tab'][" + index + "]//div[@class='task-title']")).getText().then(function(taskTitle) {
if (taskTitle == "testName") {
createdTask = "//div[@id='Tasks_Tab'][" + index + "]";
return createdTask;
}
});
}
});
};