如何检查find_element_by_partial_link_text的父元素

时间:2018-09-19 03:33:42

标签: python-3.x selenium web-scraping screen-scraping

我正在使用find_element_by_partial_link_text选择器找到“下一个”按钮,以便可以单击它并继续爬网。

但是,我遇到的问题是有时页面上的其他随机链接中也包含“下一个”一词,这会破坏脚本。

我尝试使用下面的代码来解决这个问题,这显然是行不通的。

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元素?

2 个答案:

答案 0 :(得分: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中/可点击

答案 1 :(得分:0)

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

例如,让我们进入https://www.google.com网页。麦克风图标的xpath为//div[@id='gs_st0']。要找到该元素的父级(即搜索框),请使用“ 子级”轴,如下所示。

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

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

在您的情况下,如果子元素的xpath为://a[text()='Next'] 因此,要找到“下一步”链接的父元素,请在xpath下使用:

parentElement = driver.find_element_by_xpath("//*[child::a[text()='Next']]")