Selenium XPath多个属性包括文本

时间:2014-11-18 16:34:10

标签: python selenium xpath selenium-webdriver

这是我正在处理的HTML

<a class="_54nc" href="#" role="menuitem">
    <span>
        <span class="_54nh">Other...</span>
    </span>
</a>

我似乎无法通过链接找到正确的XPath结构。页面上还有其他元素与<a class="_54nc">具有相同的属性,所以我想我会先从孩子开始,然后再去找父母。

我尝试了很多变化,但我会想到这样的事情:

crawler.get_element_by_xpath('//span[@class="_54nh"][contains(text(), "Other")]/../..')

我尝试的所有东西似乎都没有用。任何想法都会非常感激。

3 个答案:

答案 0 :(得分:1)

或者,更清洁的是//*[.='Other...']/../..,而.则直接指向父元素

在其他情况下,如果您想查找a代码,请使用css [role='menuitem'],如果role属性是唯一的,这是更好的选择

答案 1 :(得分:0)

尝试这个怎么样

crawler.get_element_by_xpath('//a[@class="_54nc"][./span/span[contains(text(), "other")]]')

答案 2 :(得分:0)

试试这个:

crawler.get_element_by_xpath(&#39; //一个[@class =&#39; _54nc&#39;] //跨度[。=&#39;其他...&#39;]&#39; );

这会搜索元素&#39; a&#39;作为&#34; _54nc&#34;并包含确切的文本/ innerHTML&#34;其他......&#34;。此外,您只需编辑文本&#34;其他...&#34;与其他文本一起查找相应的元素