我正在使用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
元素?
答案 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']]")