【问题标题】:Unable to find element using Xpath无法使用 Xpath 找到元素
【发布时间】:2025-12-26 12:15:07
【问题描述】:

单击以下 HTML 代码的元素无效。

a class="add" href="/travelPlan_revamp/addTravel.htm?travel_type=D">Add</a>

我正在使用下一个 Xpath: html/body/div[1]/div[2]/div/a

但是显示No Such Element Found异常。

【问题讨论】:

  • 确保元素不在 iframe 中。 Xpath 可以通过 Firebug 获得。

标签: java selenium xpath selenium-webdriver


【解决方案1】:

首先确保网页元素不在 iframe 中。 如果是,那么你需要先切换到iframe,然后再尝试点击元素。

另外,试试下面的xpath,以防你捕获了错误的xpath:-

//a[@class='add' and .='Add']

【讨论】:

    【解决方案2】:

    绝对 xpath 始终以正斜杠“/”开头。我认为您使用了绝对 xpath,或者您错过了'/',或者您在此处引用错误。请验证。通常绝对 xpath 看起来像 /html/body/form/div[3]/div[2]/div[1]/div[2]/input

    【讨论】:

      【解决方案3】:

      试试这个 xpath:

       //a[contains(text(),'Add')];
      

      【讨论】:

      • 再次出错 org.openqa.selenium.InvalidSelectorException: 无效的选择器:由于以下错误,无法使用 xpath 表达式 //a[contains(text(),'Add')] 定位元素:TypeError:无法在“文档”上执行“createNSResolver”:参数 1 不是“节点”类型。
      【解决方案4】:

      抱歉,这是在 Iframe 中的问题。现在我通过切换到 iframe 然后单击事件找到了解决方案。

      driver.switchTo().frame("rightMenu"); driver.findElement(By.xpath("html/body/div[1]/div[2]/div/a")).click();

      【讨论】:

        【解决方案5】:

        如果没有 HTML,很难判断您的 XPATH 表达式是否正确。 你的 XPATH 表达式告诉:

        • 取一个“a”元素
        • 在第二个 div 元素中
        • 在第一个 div 元素中
        • 在正文元素中
        • 在 html 元素中

        所以检查是否存在一个“a”元素来检查 Xpath 表达式。

        【讨论】:

          【解决方案6】:
          //a[@class='add' and text()='Add'] 
          

          试试那个。

          您通过哪种方法查找元素?

          @FindBy (how = How.XPATH)
          

          driver.findElement(By.xpath());
          

          有时@FindBy 表示法不喜欢正确使用 Xpath。

          【讨论】:

          • 我用过 driver.findElement(By.xpath());。仍然显示错误
          • 只是为了确保在尝试查找元素之前确保页面已加载?你能分享代码 sn-p 寻找元素吗?如果您提供了正确的 html,请不要怀疑 xpath 的问题,因为许多解决方案之一应该可以工作
          • 如果你已经解决了你的问题,你可以关闭它并标记一个答案,否则你能提供更多信息以便我们更好地解决问题吗?
          【解决方案7】:

          在 xpath 下面试试这个

          //a[包含(文本(),'添加')]

          【讨论】:

          • 再次出错 org.openqa.selenium.InvalidSelectorException: invalid selector: Unable to locate an element with the xpath expression //a[contains(text(),'Add')] 因为以下错误:TypeError:无法在“文档”上执行“createNSResolver”:参数 1 不是“节点”类型。