«Элемент не виден, исключение» при попытке выбрать опцию поиска с помощью веб-драйвера selenium в python - PullRequest
0 голосов
/ 29 мая 2018

Я получаю «Исключение невидимого элемента» при попытке щелкнуть параметр поиска на веб-странице.Элемент не скрыт, и я поставил time.sleep (10), чтобы у страницы было достаточно времени для загрузки.Пожалуйста, предложите, почему я получаю эту ошибку и как ее обойти.

Я хочу нажать на опцию «Новый поиск» в коде.

<a class="newsearch btn btn3d tbbtn" href="javascript:" style="position:static">
    <div id="TBnewsearch"><img src="../../../../resources/images/mt_sprites.gif" 
    alt="New search" />
    </div>
        <span>New search</span>
</a>

Пожалуйста, найдите мой код длящелкнув по нему ниже:

time.sleep(10)

New_Search = browser.find_element_by_css_selector(' #Toolbar > table > tbody > tr > td.TBGroup.TBGroup1 > a.newsearch.btn.btn3d.tbbtn')
action2 = ActionChains(browser)
action2.move_to_element(New_Search).click()
action2.perform()

Я также попытался выполнить простой поиск и щелкнуть элемент, но получил то же исключение на шаге New_Search.click ().

раз.sleep (15)

New_Search = browser.find_element_by_xpath('//*[@id="Toolbar"]/table/tbody/tr/td[2]/a[1]')
New_Search.click()

Я пытался использовать WebDriverWait, как предложено Дебаняном ниже, но ожидаемое условие не выполнено, и я получил исключение тайм-аута.

time.sleep(15)

WebDriverWait(browser, 15).until(EC.visibility_of_element_located(browser.find_element_by_xpath('//*[@id="Toolbar"]/table/tbody/tr/td[2]/a[1]')));
New_Search.click()

1 Ответ

0 голосов
/ 30 мая 2018

Можете ли вы проверить эти локаторы в инструментах разработки и проверить, указывают ли они на нужный элемент на странице?В консоли используйте $x() для проверки XPath и $$() для проверки селекторов CSS.Если он возвращает 0 , вы знаете, что с вашим локатором что-то не так.Если он возвращает 1 , вы можете идти.Если он возвращает больше, чем 1 , вам необходимо убедиться, что искомый элемент является первым возвращаемым элементом.Если это не так, вам нужно будет создать новый локатор.У меня такое ощущение, что ваши текущие локаторы возвращают 2 узла, из которых первый невидим.

Попробуйте получить доступ к целевому элементу, используя предков этих элементов.Продолжайте подниматься на один уровень вверх, пока не найдете уникально идентифицируемый узел, а затем используйте относительный xpath (//) для перехода к вашему элементу.Вы также можете использовать ординалы / индекс для определения местоположения элемента, но я бы не рекомендовал его, поскольку они сделают ваш тест хрупким.Если возможно, обновите вопрос большим фрагментом HTML или URL приложения

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