div > -6ren">
gpt4 book ai didi

java - Xpath 和 cssselector 在::before 和::after 的情况下似乎不灵活

转载 作者:行者123 更新时间:2023-12-02 12:01:59 26 4
gpt4 key购买 nike

HTML

<li>::before<a href="#county" class="eods-error">::before"County is required."::after</a></li>

基于上面的html我写了以下内容:

Cssselector:#eods-error > div > div.eods-error-box > ul > li:nth-child(1)

xpath : //*[@id="eods-error"]/div/div[1]/ul/li[1]/a/text()

我使用 selenium webdriver 和 java 来实现自动化。为了根据上面给定的 HTML 定位元素,我使用了上面的 diff。 2 个定位器。但如果在 html 中添加新元素/div,似乎这些可能会产生问题。

有没有其他方法可以使用一些更详细的 xpath 来定位上述元素,这样即使额外的 DIV 出现在 html 中,xpath 也不会失败。

html 部分的屏幕截图:

enter image description here

最佳答案

您可以使用下面

  • XPath

    //a[@href="#county"]
  • CSS 选择器

    a[href="#county"]

匹配所需的 anchor

如果您希望当前选择器匹配它,无论是否存在临时 div,那么您可以使用以下语法

  • XPath。改变

    //*[@id="eods-error"]/div/div[1]/ul/li[1]/a/text()

    //*[@id="eods-error"]//div[1]/ul/li[1]/a/text()
  • CSS 选择器。改变

    #eods-error > div > div.eods-error-box > ul > li:nth-child(1)

    #eods-error div.eods-error-box > ul > li:nth-child(1)

请注意,XPath 中的 / 和 CSS 选择器中的 > 代表直接子节点的路径,而 XPath 中的 // 和 CSS 中的空格选择器 - 用于后代节点的路径

另请注意,XPath 语法 .../text() 在 Selenium 中不起作用:您不应定位文本节点,而应定位父 WebElement,然后调用 getText() 方法

关于java - Xpath 和 cssselector 在::before 和::after 的情况下似乎不灵活,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47185080/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com