Поиск элементов по xpath - PullRequest
0 голосов
/ 16 января 2020

Пожалуйста, помогите мне, я пытаюсь выбрать изображение, которое является ссылкой (трейнер на веб-сайте)

Это мой код:

login = browser.find_element_by_xpath("a[title=\"ACG Air Moc 3.0 'Cargo Khaki/Oil Green' Release Date\"]")

Это код элемента проверки

img src="https://secure-images.nike.com/is/image/DotCom/CI9367_301_A_PREM?$SNKRS_COVER_WD$&align=0,1" alt="ACG Air Moc 3.0 'Cargo Khaki/Oil Green' Release Date" title="ACG Air Moc 3.0 'Cargo Khaki/Oil Green' Release Date" class="image-component mod-image-component u-full-width" style="opacity: 1; transition: opacity 1s ease 0s;"

И вот ошибка, которую я получаю:

selenium.common.exceptions.NoSuchElementException: Сообщение: нет такого элемента: Невозможно найти элемент: {"method": "xpath", "selector": "a [title =" ACG Air Mo c 3.0 'Car go Хаки / Масло-зеленый' Дата выпуска "]"}

Я использую Pycharm

Ответы [ 4 ]

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

Кажется, ты был довольно близко. Однако, поскольку желаемый элемент - это узел <img> вместо использования a, вам нужно использовать //img, а вы используете , вам необходимо добавить @ перед именем атрибута, поэтому ваша рабочая строка кода будет выглядеть следующим образом:

login = browser.find_element_by_xpath("//img[@title=\"ACG Air Moc 3.0 'Cargo Khaki/Oil Green' Release Date\"]")

Однако лучше было бы использовать несколько атрибутов следующим образом:

login = browser.find_element_by_xpath("//img[@class='image-component mod-image-component u-full-width' and contains(@title, 'Cargo Khaki')][starts-with(@alt, 'ACG Air Moc 3') and contains(@title, 'Oil Green')]")
0 голосов
/ 16 января 2020

По ошибке, Selenium не может найти элемент. Go к элементу проверки. Найдите изображение, которое вы хотите. Щелкните правой кнопкой мыши на элементе и go чтобы скопировать-> скопировать Xpath. Используйте этот xpath.

0 голосов
/ 16 января 2020

U имеет дело с элементом <img>, а не с элементом гиперссылки <a>.

0 голосов
/ 16 января 2020

<img> (не <a>) не является root из html, поэтому вам нужно использовать //img в xpath. Вам также нужно добавить @ перед title

browser.find_element_by_xpath("//img[@title=\"ACG Air Moc 3.0 'Cargo Khaki/Oil Green' Release Date\"]")
...