Python Selenium: нажатие на «видимый» элемент с помощью Selenium выдает ошибку «элемент не виден» - PullRequest
0 голосов
/ 12 января 2019

Я пытаюсь протестировать этот сайт. (https://www.phptravels.net/),, и я хочу протестировать функцию входа в систему. Существует ссылка «Моя учетная запись», которую нужно сначала нажать, чтобы отобразить раскрывающийся список кнопок «Вход в систему» ​​и «Зарегистрироваться». Код HTML выглядит следующим образом. :

<li id="li_myaccount" class="">
    <a href="javascript:void(0);" data-toggle="dropdown" class="dropdown-toggle go-text-right" aria-expanded="false"><span class="ink animate" style="height: 137px; width: 137px; top: -10.7969px; left: -28.7344px;"></span><i class="icon_set_1_icon-70 go-right"></i> My Account <b class="lightcaret mt-2 go-left"></b></a>
    <ul class="dropdown-menu">
        <li><a class="go-text-right" href="https://www.phptravels.net/login"> Login</a></li>
        <li><a class="go-text-right" href="https://www.phptravels.net/register">  Sign Up</a></li>
    </ul>
</li>

Когда я пытаюсь нажать кнопку «Моя учетная запись», появляется сообщение об ошибке «элемент не виден». Я запутался, потому что, видимо, эта кнопка видна все время. Вот код:

elem = driver.find_element_by_xpath("//*[@id='li_myaccount']/a")
elem.click()

Что не так с моим кодом? Спасибо.

Ответы [ 2 ]

0 голосов
/ 13 января 2019

Я пытался взаимодействовать со ссылкой на мою учетную запись, которая показана в правой части панели навигации на странице (https://www.phptravels.net/). Использование локатора //*[@id='li_myaccount']/a при попытке щелкнуть ссылку, используя Webdriver, я получаю ошибку ниже:

ElementNotVisibleException: Message: element not interactable

Когда я исследовал html с помощью консоли Chrome и искал элемент с помощью локатора //*[@id='li_myaccount']/a, ссылка на мою учетную запись, по которой вы хотите щелкнуть, не выделяется.

Поэтому дальнейшие исследования привели меня к выбору локатора //*[contains(@class,'navbar-nav navbar-right')]//*[@id='li_myaccount']/a, который выделяет ссылку на мою учетную запись.

Затем я использовал новый локатор, чтобы щелкнуть ссылку Моя учетная запись, используя веб-драйвер, и он работает! Если вы внимательно заметили, я просто добавил предыдущий путь в локатор, которым вы поделились, чтобы однозначно идентифицировать ссылку на мою учетную запись.

Click My Account Link

0 голосов
/ 12 января 2019

Измените xpath на этот:

(//*[@id='li_myaccount']/a)[2]

Если вы посмотрите на источник, на самом деле этому элементу соответствуют 2 элемента - тег <a> в каком-то модале, который в данный момент скрыт, и тот, на который вы пытаетесь обратиться; Таким образом, ваша проблема, метод возвращает первый, который не является желаемым.

Этот xpath вернет 2-й элемент ([2]) из набора ответов ((), окружающий искомое значение).

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