2013-11-26 91 views
1

我能够做到这一点Python:Selenium xpath查找不区分大小写字符的元素?

search = "View List" 
driver.find_elements_by_xpath("//*/text()[normalize-space(.)='%s']/parent::*" % search) 

,但我需要它忽略,并像文本匹配的所有元素:“查看列表”或“查看列表”

search = "View List" 
driver.find_elements_by_xpath("//*/lower-case(text())[normalize-space(.)='%s']/parent::*" % search.lower()) 

上面没有似乎工作。 lower-case() XPATH 1.0

回答

2

lower-case()函数仅支持XPath 2.0。对于XPath 1.0,您将不得不使用translate()

示例代码在此stackoverflow answer中给出。

编辑: 硒Python绑定的网站有一个常见问题 - Does Selenium 2 supports XPath 2.0 ?

编号: http://seleniumhq.org/docs/03_webdriver.html#how-xpath-works-in-webdriver

硒代表XPath查询到浏览器自身的XPath 引擎,所以硒支持的XPath支持无论浏览器 支持。在没有本机XPath引擎的浏览器中(IE 6,7,8),Selenium仅支持XPath 1.0。

+0

无论如何要在硒python工作xpath 2.0?该解决方案真的不是最佳 –

+0

不幸的是没有。 xpath 2.0需要被浏览器支持,它不是一个硒/ python限制。 – Faiz

+0

这就是我在想什么,使用支持xpath 2.0的JavaScript库并将其注入到python中 –