【问题标题】:How to Check Parent Element of find_element_by_partial_link_text如何检查 find_element_by_partial_link_text 的父元素
【发布时间】:2018-09-19 03:33:42
【问题描述】:

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

【问题讨论】:

  • 能否添加相关的HTML代码
  • @NarendraR 这是我正在抓取的网站的link
  • 您可能已经识别出正确的父节点

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


【解决方案1】:

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

【讨论】:

  • 我会试试这个
【解决方案2】:

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

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

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

上面的 xpath 会为你获取子元素的父元素。

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

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

【讨论】:

  • 我不能使用 xpath。我必须将find_element_by_partial_link_text 用于this reason.
猜你喜欢
  • 1970-01-01
  • 2022-12-16
  • 2018-11-15
  • 1970-01-01
  • 2011-04-14
  • 1970-01-01
  • 2017-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多