【问题标题】:How to query an HTML element in Selenium via Xpath?如何通过 Xpath 查询 Selenium 中的 HTML 元素?
【发布时间】:2015-11-23 02:02:37
【问题描述】:

阅读大量代码示例后,我试图找到<tr> 元素,其中后代<span> 元素的内容与参数columnValue 匹配,我只想在具有@ 中给出的索引的列中搜索987654324@。我在 Java 中使用 Selenium 尝试过类似的操作,但我总是得到一个 InvalidSelectorException: Xpath expression cannot be evaluated。我在这个 Xpath 表达式中分别测试了这两个条件,它们可以正常工作。但是,当我将它们与 and 运算符组合到一个 XPath 表达式中时,会引发异常。

这是我的 Java 代码:

public WebElement getRow(final String columnId, final String columnValue) {
      final List<WebElement> eleList =
             getElement().findElements(
                   By.xpath("tbody/tr[td/span/text()='" + columnValue + "' and ./td/position()=" + (columnId + 1)"]"));
      return null;
}

这是相应的 HTML 代码:

<tbody>
  <tr class="even">
    <td>
      <span>Regionalmarkt Nord</span>
    </td>
    <td>
      <span>777</span>
    </td>
    <td>
      <span id="links">        
        <a name="delete_button" href="#" > <img title="Delete" src="/path/..."/></a>
        <a id="edit_button" href="#"> <img title="Edit" src="/path/..."/></a>  
       </span>
    </td>
  </tr>
  <tr>
  ...
  </tr>
</tbody>

【问题讨论】:

    标签: java html selenium xpath


    【解决方案1】:

    试试这个 xpath 表达式:

    "//td[" + (columnId + 1) + "]/span[text()='"+ columnValue +"']/ancestor::tr[1]"
    

    【讨论】:

      【解决方案2】:

      您可以使用 firebug 获取元素的 xPath。

      参考这篇文章:

      http://www.wikihow.com/Find-XPath-Using-Firebug

      查看此链接是否有类似问题:

      How to get the absolute XPath for an element within Firebug?

      【讨论】:

        猜你喜欢
        • 2016-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-10
        • 2021-10-11
        相关资源
        最近更新 更多