Селен выпуск xpath - PullRequest
       0

Селен выпуск xpath

0 голосов
/ 18 февраля 2020

У меня очень странная проблема с селеном и xpath. У меня есть страница, которая отображает 25 <a> с вложенными тегами <img/>. Мне нужно использовать findElements() все эти элементы. Если я получаю исходный код страницы и выполняю поиск по тексту следующей подстроки: "alt =" Expand List "" я получаю 25 появлений. Но когда я выполняю команду let items = await driver.findElements(By.xpath("//a[//img[contains(@alt,'Expand List')]]")), я получаю 32 предмета. Я зарегистрировал элементы в Google chrome и в список добавлены <a>, которые содержат изображения с различными значениями alt. Любые идеи? Код:

    let text = await driver.getPageSource();
    var count = (text.match(/alt="Expand List"/g) || []).length;
    let items = await driver.findElements(By.xpath("//a[//img[contains(@alt,'Expand List')]]"))
    console.log(count, items.length); //outputs 25, 32

enter image description here И это изображение с альт Collapse List появляется в <a>

enter image description here

1 Ответ

1 голос
/ 18 февраля 2020

Ваш xpath должен быть больше похож на:

//a/img[contains(@alt,'Expand List')]

Один sla * sh указывает, что это дочерний элемент родителя //a.

Я настоятельно рекомендую получить надстройку браузера для тестирования XPaths. Тот, который я использую почти каждый день, это ChroPath. Вы также можете проверить xpath в консоли devtools с помощью команды

$x('//a/img[contains(@alt,'Expand List')]')

. Вывод будет выглядеть следующим образом:

XPath in Devtools console

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...