Задать вопрос
@Masianich
Начинающий frontend разработчик

Программа не видит элемент страницы по пути xpath. В чем может быть проблема?

Есть код страницы:

<thead class="ant-table-thead">
    <tr>
        <th class="ant-table-selection-column">
            <div>
                <div class="ant-table-selection"><label class="ant-checkbox-wrapper"><span class="ant-checkbox"><input
                                type="checkbox" class="ant-checkbox-input" value=""><span
                                class="ant-checkbox-inner"></span></span></label></div>
            </div>
        </th>


Выглядит это вот так:

64a6b6c9a7f82783969579.png

С помощью программы мне надо нажать на checkbox

Мой код выглядит так:

checkbox = browser.find_element(By.XPATH, "//div[@class='ant-table-selection']//input[@type='checkbox']")


Ошибка вот так:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//div[@class='ant-table-selection']//input[@type='checkbox']"}


Облалазал весь гугл, ответа не нашел
Есть предположение, что программа не может понять какой именно checkbox надо найти и нажать, так как у всех чекбоксов на странице одинаковые классы.
Пробовал указывать программе на "второй" чекбокс на странице - не помогло.
iframe на странице отсутствует

Пришлю дополнительную информацию если надо.
  • Вопрос задан
  • 219 просмотров
Подписаться 1 Простой 16 комментариев
Пригласить эксперта
Ответы на вопрос 1
alekciy
@alekciy
Вёбных дел мастер
программа не может понять какой именно checkbox

Нет, не так. Если под выражение попадает несколько элементов, то возвращается коллекция таких элементов. Но тут явно в ошибке указано "no such element". В момент выполнения команды find_element элемента на странице нет. Если при просмотре страницы в браузере элемент этот есть, значит нужно просто подождать пока он в DOM появится. Для это используют WebDriverWait/until. Для питона это описано в документации: 5.1. Explicit Waits
Ответ написан
Ваш ответ на вопрос

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

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