我不明白为什么转到此页面
或该网站上的任何页面,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&out-from-date=2018-09-01&out-to-date=2018-09-30&budget=60&trip-length-from=1&trip-length-to=3#glyphs.chevron-right" ng-href="/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#glyphs.chevron-right"></use></svg></div></core-icon></a>
如果我将它写在shell上,那么奇怪的是它确实可以工作,并且行数相同。我也尝试过用time.sleep
给它几秒钟,但是什么也没发生。
答案 0 :(得分:0)
此元素(即<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()