如何检查find_element_by_partial_link_text的父元素

问题描述 投票:0回答:2

我正在使用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元素?

python-3.x selenium web-scraping screen-scraping
2个回答
2
投票

尝试使用以下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 /中以便可点击


0
投票

如果要查找元素的父元素,请使用以下方法:

例如,让我们来看看qazxsw poi网页。麦克风图标的xpath是qazxsw poi。要查找该元素的父元素(搜索框),请使用“子”轴,如下所示。

https://www.google.com

上面的xpath将获取子元素的父元素。

在您的情况下,如果您的子元素的xpath是://div[@id='gs_st0']所以要找到'Next'链接的父元素,请使用xpath下面的:

//*[child::div[@id='gs_st0']]

© www.soinside.com 2019 - 2024. All rights reserved.