xpath возвращает две кнопки - PullRequest
0 голосов
/ 08 марта 2019

xpath expression $x("//button[text() = 'Got it']") в Chrome возвращает два элемента кнопки, но на странице есть только одна такая кнопка.

Оба элемента выглядят одинаково с точки зрения данных.Щелчок по второму элементу массива с использованием селена и python иногда срабатывает, но много раз возвращает Element is not interactable ошибка.

Любые указатели?

<button class="button slim-large" ng-click="ctrl.closeDialog()">Got it</button>

enter image description here enter image description here

Добавлен этот код для обработки ситуации с дублирующейся кнопкой, когда одна видна, а другая нет.

    button_clicked = False
    elems = self.find_all_by_xpath(locator="//button[contains(text(),'Got it')]")
    for elem in elems:
        if elem.is_displayed():
           elem.click()
           button_clicked = True

    if button_clicked == False:
       print("None of " + str(len(elems)) + " buttons are click-able")

Спасибо, Самир

1 Ответ

0 голосов
/ 09 марта 2019

Спасибо за комментарий от @JohnJordan. На странице действительно было две кнопки, и одна была скрыта. Жаль, что разработчики не могли использовать уникальные идентификаторы для всех элементов.

Я удалил модальный div, который имел видимую кнопку «Got It», и снова запустил xpath, и теперь вернулась только одна кнопка! Это означает, что в DoM есть еще одна скрытая кнопка.

Модифицированный код для обработки ситуации.

button_clicked = False
elems = self.find_all_by_xpath(locator="//button[contains(text(),'Got it')]")
for elem in elems:
    if elem.is_displayed():
       elem.click()
       button_clicked = True

if button_clicked == False:
   print("None of " + str(len(elems)) + " buttons are click-able")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...