使用Xpath获取前一个兄弟

时间:2017-02-02 10:31:49

标签: selenium xpath

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

 <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>

获得&#34;正常&#34;元素我使用Xpath:

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

然后我想得到元素<i class="icon icon-doc-new"></i> 像这样的东西

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

尝试了其他几种方法,但也没有去过。

任何提示?

3 个答案:

答案 0 :(得分:1)

所以,如果我正确并且不在兄弟姐妹之前,你实际上需要父元素。

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

如果您想要先前的兄弟姐妹,请尝试使用.//*[@id='main-menu']/li/a/span[contains(text(), 'Create')]/precending-sibling::i

答案 1 :(得分:1)

尝试使用以下XPath

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

答案 2 :(得分:1)

尝试以下任何一项xpath

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

xpath的说明:使用class标记的<span>属性,并使用<span>方法继续使用text方法{ {1}}。

  

OR

preceding-sibling keyword

xpath的说明: - 使用//span[@class='caret hidden-sm']/..//preceding-sibling::span[@class='hidden-sm dropdown-label'] 标记的class属性,使用{<span>标记以及<span>属性继续前进{1}}。