Транспортир извлекает отдельный элемент из ElementArrayFinder
Я хочу получить первый элемент из ElementArrayFinder, соответствующий условию. Следующий код предоставляет мне ожидаемый элемент, но он проходит через все элементы, что требует времени.
Есть ли способ к этому?
return content.all(by.css('.class')).filter(function(label){
return label.getText().then(function(text){
return text === searchName;
});
}).first();
ВЫВОД: Ответ, предоставленный Sudharsan Selvaraj, сработал
var ele = content.all(by.xpath(".//*[contains(@class,'class')][normalize-space(text())='some-value']")).first()
Сокращено время поиска элемента
Ответ, предоставленный Florent B. также решает проблему и выглядит как гораздо более простой подход.
return content.element(by.cssContainingText('.class', searchName));
3 ответа
Вы должны использовать локатор by.cssContainingText
найти элемент по CSS и тексту:
return content.element(by.cssContainingText('.class', searchName));
Вы можете использовать xpath, чтобы найти элемент с определенным текстом. Посмотрите ниже пример xpath.
var ele = content.all(by.xpath(".//*[contains(@class,'class')][normalize-space(text())='some-value']")).first()
Почему у вас нет прямого доступа к первому элементу метки?
return content.all(by.css('.class label')).first().getText().then(function (text) {
return text === searchName;
});
PS Я не тестировал код, но он, вероятно, должен работать