我能够做到这一点
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条答案
按热度按时间0wi1tuuw1#
只有XPath 2.0才支持
lower-case()
函数。对于XPath 1.0,必须使用translate()
。示例代码在此stackoverflow答案中给出。
编辑:Selenium Python绑定站点有一个常见问题解答-Selenium 2支持XPath 2.0吗?:
参考:http://seleniumhq.org/docs/03_webdriver.html#how-xpath-works-in-webdriver
Selenium将XPath查询委托给浏览器自己的XPath引擎,因此Selenium支持XPath支持浏览器支持的任何内容。在没有本机XPath引擎的浏览器(IE 6、7、8)中,Selenium仅支持XPath 1.0。
w6lpcovy2#
由于
lower-case()
仅在2.0中受支持,因此我使用translate()
提出了此解决方案,这样我就不需要每次都手动键入整个函数其计算结果为: