Selenium + Python: следующая кнопка через нажатие () - PullRequest
0 голосов
/ 26 июня 2018

Я не понимаю, почему, когда я захожу на эту страницу

https://www.ryanair.com/it/it/voli-low-cost/?from=BGY&out-from-date=2018-09-01&out-to-date=2018-09-30&budget=60&trip-length-from=1&trip-length-to=3

или любой другой странице с этого сайта, Selenium не позволяет мне в скрипте запустить кнопку следующей страницы с кодом:

next_page = browser.find_element_by_xpath('/html/body/div[2]/main/div/div[2]/farefinder-widget/div/div[2]/div[2]/div/div/core-pagination/div/div[2]/a')
next_page.click()

По коду HTML:

<a ng-class="{'disabled': $ctrl.isLastPage($ctrl.currentPageIndex)}" ng-click="$ctrl.handleNextClick()" class="core-link"><span class="nav-label">Successivo</span><core-icon icon-id="glyphs.chevron-right" class="icon-22 fill-ryanair-bright-blue"><div><svg tabindex="-1" focusable="false" role="img"><use xlink:href="/it/it/voli-low-cost/?from=BGY&amp;out-from-date=2018-09-01&amp;out-to-date=2018-09-30&amp;budget=60&amp;trip-length-from=1&amp;trip-length-to=3#glyphs.chevron-right" ng-href="/it/it/voli-low-cost/?from=BGY&amp;out-from-date=2018-09-01&amp;out-to-date=2018-09-30&amp;budget=60&amp;trip-length-from=1&amp;trip-length-to=3#glyphs.chevron-right"></use></svg></div></core-icon></a>

Принимая во внимание, что если я напишу его на оболочке, как ни странно, он работает с теми же точными строками. Я также пытался дать ему несколько секунд с time.sleep, но ничего не произошло.

1 Ответ

0 голосов
/ 26 июня 2018

Разбивка на страницы для этого элемента отключена, т.е. <a ng-class="{'disabled': $ctrl.isLastPage..... Это работает для меня, если я нажимаю на родительский div, например, так:

browser.find_element_by_css_selector(".next.vertical-center").click()

Или, если вы хотите использовать свой xpath, вам просто нужно удалить последний 'a':

next_step = browser.find_element_by_xpath('/html/body/div[2]/main/div/div[2]/farefinder-widget/div/div[2]/div[2]/div/div/core-pagination/div/div[2]')

Для удобства чтения я рекомендую селектор CSS.

РЕДАКТИРОВАТЬ: Возможно, вы получаете исключение, потому что элемент не виден. Просто нужно прокрутить элемент в поле зрения.

element = browser.find_element_by_css_selector(".next.vertical-center")
browser.execute_script("arguments[0].scrollIntoView();", element)
element.click() 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...