Selenium Xpath:可以存储标签,但不能存储范围

Selenium Xpath:可以存储标签,但不能存储范围,selenium,xpath,Selenium,Xpath,我在页面上有以下HTML片段: <li class="underline group"> <label class="p-left">P</label><span class="p-right">1111</span> </li> P1111 以下selenium命令工作正常: <tr> <td>storeText</td>

我在页面上有以下HTML片段:

        <li class="underline group">
          <label class="p-left">P</label><span class="p-right">1111</span>
        </li>
  • P1111
  • 以下selenium命令工作正常:

    <tr>
        <td>storeText</td>
        <td>//li[2]/label</td>
        <td>tmp</td>
    </tr>
    <tr>
        <td>echo</td>
        <td>${tmp}</td>
        <td></td>
    </tr>
    
    
    storeText
    //li[2]/label
    tmp
    回声
    ${tmp}
    
    以下各项应能起作用,但不能起作用:

    <tr>
        <td>storeText</td>
        <td>//li[2]/span</td>
        <td>tmp</td>
    </tr>
    <tr>
        <td>echo</td>
        <td>${tmp}</td>
        <td></td>
    </tr>
    
    
    storeText
    //li[2]/span
    tmp
    回声
    ${tmp}
    

    我找到的唯一解决方案是
    //li[2]/span[@class='p-right']
    ,但情况就是这样吗?为什么默认情况下
    //li[2]/span
    不起作用?

    请尝试
    //li[2]///span
    ,应该这样做。

    我要查找的第一件事是,文档中是否有一个更早的
    //li[2]/span
    ,在您要查找的
  • 之前,早期的
    span
    没有class=“p-right”,也没有文本内容?因此,
    ${tmp}
    是第一个选择的
    //li[2]/span
    的文本值,而不是您试图选择的文本值?这可以解释您看到的结果,包括您观察到的
    //li[2]//span
    也“不起作用”。您是否尝试过在浏览器调试器中评估
    //li[2]/span
    ,以查看它首先选择了哪个

    如果这还不能解释。。。不幸的是,根据我的经验,有几次Selenium没有正确地实现XPath规范。我不知道为什么,我同意这是令人沮丧的。然而,我认为知道在这种情况下可能是Selenium的问题是有帮助的,而不是您对XPath的错误理解


    如果你找不到第一段中所述的解释,你很可能不得不采取变通办法。谢天谢地,在这种情况下,您已经找到了一个解决方法,可以使用
    //li[2]/span[@class='p-right']

    指定“不起作用”:
    //li[2]/span
    提供了什么?Xpath是最脆弱的。cssSelector将为您提供更大的灵活性。Driver.findElement(By.cssSelector(“li:nth child(2)>span”)).text。使用css选择器可以保证,如果结构发生变化,您的代码仍然可以工作Xpath@LarsH在硒中不起作用。不存储元素的文本,即使Xpath应该返回正确的元素。@bcar:我想知道css选择器如何比Xpath表达式更具适应性。它们看起来相当相似。@ MayStutoCou.com:当你报告某件事“不起作用”时,请考虑告诉我们实际发生了什么,因为你有权获得诊断信息,而我们不知道。@拉什:在这种情况下,它并不是那么多的信息。将存储空白字符串,而不是将实际内容存储在span中。对于标签,通过实际内容进行存储。为什么和label与span之间会有区别?@maythesource.com:与错误的非空白字符串或错误相反,它是空白字符串的信息可能是至关重要的。为什么标签和跨度之间存在差异。。。我不知道;我们可能会看到更多的HTML,例如早期的
    li
    s和
    span
    ,我们可以看出。我已经尝试使用其他在线x-path测试器,并选择了正确的元素()。我将尝试更多,但我认为我同意您的观点,即selenium ide与xpath的关系有点不一致。。。很多虫子。他们需要修复它们。