首页 > 解决方案 > 如何通过长而复杂的xpath查找元素?

问题描述

我想找到一个按钮,但不知道html代码很复杂。你能帮助我吗?

HTML

<div style="margin-top: 20px;">
  <span style="display: inline-block; margin: 5px; padding: 10px 15px; border-radius: 5px; font-size: 18px; line-height: 16px; cursor: pointer; color: rgb(255, 255, 255); background-color: rgb(99, 99, 102);">Bugsnag akzeptieren
  </span>
  <span style="display: inline-block; margin: 5px; padding: 10px 15px; border-radius: 5px; font-size: 18px; line-height: 16px; cursor: pointer; color: rgb(255, 255, 255); background-color: rgb(0, 122, 255);">Alle akzeptieren
  </span>
</div>

所以我想找到第二个元素并尝试了类似的东西:

self.browser.find_elements_by_xpath("//span[@style='the whole text that equals style in the html']")

但它似乎不起作用......

标签: pythonhtmlseleniumselenium-webdriverxpath

解决方案


根据你想用它做什么,你可以//span[2]选择第二个跨度:

选择元素示例

self.browser.find_elements_by_xpath("//span[2]") 在此处输入图像描述

如果你想要整个元素。


选择文本示例

self.browser.find_elements_by_xpath("//span[2]/text()")

如果您想要第二个跨度的内部 html 文本。

我在这个网站上测试了 xpath 表达式以确保它有效。

我复制了你提供的 html 并输入了 xpath 表达式//span[2]/text()来测试它。 在此处输入图像描述

有关 xpath 的更多信息,请点击此处


推荐阅读