【问题标题】:Xpath to an element with two different contains text具有两个不同包含文本的元素的 Xpath
【发布时间】:2016-02-28 01:38:07
【问题描述】:

我有下一个 HTML,我有这个 xpath 来查找“显示”:

xpath=//*[@id="Some_id"]/div/table/tbody/tr/td[contains(text (), "Show")] 

它有效,但我需要找到一个特定项目的“显示”,在这个“主要”项目的问题上,所以我需要这样的东西:

xpath=//*[@id="Some_id"]/div/table/tbody/tr/td[contains(text (), "Show")]/preceding-sibling::td[contains(text (), "Main")] 

但它不起作用。谢谢

<tr class="even">
                    <td title="Main">
                          <a href="Stuff_1"><strong>Main</strong></a>
                    </td>
                    <td>
                      text/html
                    </td>
                    <td>
                      Another text
                    </td>
                    <td>
                      Some text here
                    </td>
                    <td>
                      No
                    </td>
                    <td>

                          <a href="Stuff_1_a">Show</a>
                    </td>
                  </tr>

【问题讨论】:

    标签: html xpath robotframework


    【解决方案1】:

    你可以试试这个 xpath。这将首先选择一个包含特定tdtr 元素,然后选择所需的a 标记。

    "//tr[@class='even' and td[@title='Main']]/a[text()='Show']"
    

    编辑:此 xpath 适用于 OP

    "//*[@id='Some_id']/div[1]/table/tbody/tr[@class='even']/td/a[contains(text (), 'Show')]"
    

    【讨论】:

    • SyntaxError: 该表达式不是合法表达式。不工作,对不起,有什么想法吗?
    • 您的回答帮助我找到了自己修改后的解决方案,但仍然非常感谢:xpath=//*[@id="Some_id"]/div[1]/table/ tbody/tr[@class='even']/td/a[contains(text (), 'Show')]
    • @PirreLeSang - 表达是合法的,我刚刚检查过。不知道为什么它对你不起作用,但很高兴我能提供帮助。 :)
    【解决方案2】:

    您想在表格中查找属于“主要”行的“显示”。

    这就是我要做的事情

    xpath=//td[@title='Main']/following-sibling::td[contains(text(), 'Show')]
    

    关于 xpath 轴的更多信息:http://www.w3schools.com/xsl/xpath_axes.asp

    【讨论】:

      猜你喜欢
      • 2013-09-04
      • 2020-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多