【问题标题】:Get preceding sibling with Xpath使用 Xpath 获取前一个兄弟
【发布时间】:2017-03-30 12:08:32
【问题描述】:

我有一个链接在调整页面大小时隐藏了该元素,所以我试图通过前一个元素获取该元素。

 <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
        <i class="icon icon-doc-new"></i>
        <span class="hidden-sm dropdown-label">Create</span>
        <span class="caret hidden-sm"></span>
    </a>

要获得“正常”元素,我使用 Xpath:

.//*[@id='main-menu']/li/a/span[contains(text(), 'Create')]

然后我想获取元素&lt;i class="icon icon-doc-new"&gt;&lt;/i&gt; 像这样的

 .//*[@id='main-menu']/li/a/span[contains(text(), 'Create')]/precending-sibling::i[0] //(also tried different indexes]

尝试了其他几种方法,但都没有成功。

有什么建议吗?

【问题讨论】:

    标签: selenium xpath


    【解决方案1】:

    下面试试XPath:

     .//*[@id='main-menu']/li/a[span[text()="Create"]]/i
    

    【讨论】:

    • 这立即奏效了。你介意再解释一下为什么吗?
    • 其实,我刚刚注意到你的XPath 表达式中有一个错字:precending-sibling 应该是preceding-sibling。所以你的XPath 也应该是正确的。我的意思是[1] 索引,而不是[0]
    【解决方案2】:

    所以,如果我是正确的而不是在同级之前,你实际上需要父元素。

    试试.//*[@id='main-menu']/li/a/span[contains(text(), 'Create')]/parent::a

    如果你想要前面的兄弟,那么试试.//*[@id='main-menu']/li/a/span[contains(text(), 'Create')]/precending-sibling::i

    【讨论】:

    • 谢谢!这行得通。当然现在当我看到它时 parent::a。谢谢
    【解决方案3】:

    试试下面提到的xpath

    //span[@class='caret hidden-sm']/..//preceding-sibling::span[text()= 'Create']
    

    xpath 说明:- 使用&lt;span&gt; 标签的class 属性并继续使用另一个&lt;span&gt; 标签以及使用texttext 方法@。

    //span[@class='caret hidden-sm']/..//preceding-sibling::span[@class='hidden-sm dropdown-label']
    

    xpath 的解释:- 使用&lt;span&gt; 标签的class 属性并继续使用另一个&lt;span&gt; 标签和class 属性使用preceding-sibling keyword

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-05
      • 1970-01-01
      • 2015-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多