Python Selenium 如何使用 TAG 和 SUB TAG 的信息通过 XPATH 查找元素

发布于 2025-01-11 12:32:40 字数 888 浏览 0 评论 0 原文

HTML:

<div id="related">
      <a class="123" href="url">
            <h3 class="456">
              <span id="id00" aria-label="TEXT HERE">
              </span>
            </h3>
        </a>

       <a class="123" href="url">
            <h3 class="456">
              <span id="id00" aria-label="NOT HERE">
              </span>
            </h3>
        </a>
</div>

我正在尝试查找&单击 class="123" 的 div id="lated" 内,并且其中 SPAN aria-label 包含“TEXT” “

 items = driver.find_elements(By.XPATH, "//div[@id='related']//a[@class='123'][contains(@href, 'url')]//span[contains(@aria-label, 'TEXT']")

但是它没有找到href,它只是找到了span。

然后我想做:

items[3].click()

我该怎么做。

HTML:

<div id="related">
      <a class="123" href="url">
            <h3 class="456">
              <span id="id00" aria-label="TEXT HERE">
              </span>
            </h3>
        </a>

       <a class="123" href="url">
            <h3 class="456">
              <span id="id00" aria-label="NOT HERE">
              </span>
            </h3>
        </a>
</div>

I'm trying to find & click on <a (inside the div id="related" with class="123" AND where SPAN aria-label contains "TEXT"

 items = driver.find_elements(By.XPATH, "//div[@id='related']//a[@class='123'][contains(@href, 'url')]//span[contains(@aria-label, 'TEXT']")

But it's not finding the href, it's only finding the span.

then I want to do:

items[3].click()

How can I do that.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

筱武穆 2025-01-18 12:32:40

您的 XPath 有一些拼写错误问题。
试试这个:

 items = driver.find_elements(By.XPATH, "//div[@id='related']//a[@class='123'][contains(@href,'watch?v=')]//span[contains(@aria-label,'TEXT')]")

这将为您提供所呈现块内的 span 元素。
要定位 a 元素,您应该使用另一个 XPath。
UPD
查找 div 内带有 @id='lated' 并包含带有特定 span 的所有 a 元素>aria-label 属性可以清楚地转换为 XPath,如下所示:

 items = driver.find_elements(By.XPATH, "//div[@id='related']//a[@class='123' and .//span[contains(@aria-label,'TEXT')]]")

Your XPath has some typo problems.
Try this:

 items = driver.find_elements(By.XPATH, "//div[@id='related']//a[@class='123'][contains(@href,'watch?v=')]//span[contains(@aria-label,'TEXT')]")

This will give you the span element inside the presented block.
To locate the a element you should use another XPath.
UPD
To find all the a elements inside div with @id='related' and containing span with specific aria-label attribute can be clearly translated to XPath like this:

 items = driver.find_elements(By.XPATH, "//div[@id='related']//a[@class='123' and .//span[contains(@aria-label,'TEXT')]]")
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文