Firefox目前支持XPath 1.0版本,目前没有计划支持XPath 2.0版本。
曾经想知道给定的WebDriver支持哪个版本的XPath吗?我们当然希望是2.0或3.0版本,但最可能的版本是1.0。正如Selenium维基所述,WebDriver在可能的情况下使用浏览器的原生XPath功能。当浏览器不支持XPath时(比如IE 6/7/8),Selenium会提供自己的实现,支持XPath 1.0版本。
可以用以下代码试出来,判断是否支持3.0独有的方式,或者2.0独有的方式:
from selenium.webdriver.common.by import By
def get_xpath_version(context):
try:
context.find_element(By.XPATH, "/nobody[@attr=('A'||'')]")
return "3.0"
except Exception as e:
try:
context.find_element(By.XPATH, "/nobody[@attr=lower-case('A')]")
return "2.0"
except Exception as e:
return "1.0"
# 示例用法
# 假设 context 是 WebDriver 实例
version = get_xpath_version(context)
print(version)