Задать вопрос
kshnkvn
@kshnkvn
yay ✌️ t.me/kshnkvn

Почему я не могу получить атрибут элемента в Selenium?

Фрагмент HTML кода
<div class="_2EZ_m" data-ref="1@kt+i8eamrYWcD7C0BZyGrmEGXcEvBs">
    <span>
    </span>
    <div class="_1jjYO">
        <span class="_3CSsZ">
            <svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64">
                <path fill="#FFF" d="M6.525 43.936a29.596 29.596 0 0 1-3.039-13."></path>
                <path fill="#123033" d="M50.801 13.135c-4.739-4.742-11.039-7.354-17.752-7.357-13"></path>
                <path fill="#123033" d="M25.429 19.26a8.65 8.65 0 0 0-1.028.011 2.352 2.352 0 0 0-.95."></path>
            </svg>
        </span>
    </div>
    <canvas width="264" height="264" style="display: none;"></canvas>
    <img alt="Scan me!" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQgAAAEICAYAAACj9mr/AA" style="display: block;"></div>

XPath к нему: //*[@id="app"]/div/div/div[2]/div[1]/div/div[2]/div
Проверка на поиск элемента срабатывает, элемент есть:
try:
    driver.find_element_by_xpath('//*[@id="app"]/div/div/div[2]/div[1]/div/div[2]/div')
except NoSuchElementException as e:
    print(e.msg)

Пытаюсь взять его атрибут:
qr = driver.find_element_by_xpath('//*[@id="app"]/div/div/div[2]/div[1]/div/div[2]/div')
print(qr.get_attribute('data-ref'))

Всегда выводит None.
UPD.
Попробовал найти по имени класса:
qr = driver.find_element_by_class_name('XSdna')
print(qr.get_attribute("innerHTML"))

Вывод:
<div class="_2EZ_m"><svg class="_1UDDE" width="65" height="65" viewBox="0 0 44 44"><circle class="_3GbTq _3AnXT" cx="22" cy="22" r="20" fill="none" stroke-width="4"></circle></svg></div>

Никакого data-ref нет. Смотрю на сайте через просмотр кода - есть, а селениум говорит, что нет. И селениум и я пользуемся одним браузером. Как это вообще возможно?
  • Вопрос задан
  • 989 просмотров
Подписаться 1 Средний 2 комментария
Решения вопроса 1
moonz
@moonz
web developer | seo | design
Рекомендую осуществлять прямой поиск атрибута, а не через цепочку. Такой подход будет гарантировать нахождение именно вашего атрибута.

Рекомендую так же, перед явным поиском делать print(qr.text) что бы убедиться в том что он нашел необходимый кусок

Можно попробовать .get_attribute("innerHTML")
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы