【发布时间】:2019-03-24 11:24:05
【问题描述】:
我正在尝试使 webdriver/浏览器能够处理 XPATH 2.0 版。
使用旧版本的 XPATH 很好,但在某些特定情况下,我还需要处理 XPATH 版本 2.0。
我对此进行了一些研究,但仍然没有任何线索。
例如,假设我想获取所有包含title 或href 属性的<a> 元素:
# find elements by xpath in older version
driver.find_elements_by_xpath("//a[@title or @href]")
# I want the code to be able to process XPATH version 2.0
driver.find_elements_by_xpath("//a/(@title|@href)")
我希望我能找到一些配置(或者我应该使用什么浏览器)来实现处理 XPATH 版本 2.0 的可用性。
【问题讨论】:
-
这将选择属性而不是元素。这是你的意图吗?
-
@pguardiario 我的意思是选择包含这些属性的元素。所以它不会检索没有
href或title的<a> -
既然可以将 2.0 定位器转换为兼容 1.0 的定位器,为什么还要费尽心思寻找执行 2.0 定位器的方法?你的第一个定位器会做你想做的事。您能否提供一个无法转换为等效 1.0 的 2.0 定位器?
-
当前版本的 Chrome 显示您的第二个 XPath 无效。
-
@JeffC 这就是我要解决的问题。第二个 XPath 是有效的 XPath 2.0 版,但 Chrome 不支持它。有时给定的 XPath 总是来自 XPath 2.0 版。
标签: python selenium selenium-webdriver