我正在使用find_element_by_partial_link_text
选择器找到“下一步”按钮,以便我可以单击它并继续爬行。
但是,我遇到的问题是,有时单词“next”也在页面上的其他随机链接中,这会破坏脚本。
我试过用下面的代码解决这个问题,这显然不起作用。
pagination_ul = ff.find_element_by_xpath('//*[contains(@id, "pagination-both-")]')
next_button = pagination_ul.find_element_by_partial_link_text('Next')
所以我的问题是......
如何检索和比较find_element_by_partial_link_text
元素的父元素?
换句话说,我怎样才能确保find_element_by_partial_link_text
的父级是li
元素?
尝试使用以下XPath:
driver.find_element_by_xpath('//div[starts-with(@id, "pagination-") and not(contains(@class, "hidden"))]//li[@class="a-last"]/a[text()="Next"]').click()
它看起来比通过文本内容搜索更复杂,但应该适用于所有情况
请注意,您可能需要Wait才能使元素显示在DOM /中以便可点击
如果要查找元素的父元素,请使用以下方法:
例如,让我们来看看qazxsw poi网页。麦克风图标的xpath是qazxsw poi。要查找该元素的父元素(搜索框),请使用“子”轴,如下所示。
上面的xpath将获取子元素的父元素。
在您的情况下,如果您的子元素的xpath是://div[@id='gs_st0']
所以要找到'Next'链接的父元素,请使用xpath下面的:
//*[child::div[@id='gs_st0']]