我使用Selenium和PhantomJS。如何找出PhantomJS中使用的XPath版本?
答案 0 :(得分:3)
您可以直接检查是否支持特定功能。例如,boolean()
由XPath 1.0提供,但abs()
仅由XPath 2.0提供。
PhantomJS 1.x& 2.0仅支持XPath 1.0。
完整脚本:
var page = require('webpage').create();
console.log(JSON.stringify(page.evaluate(function(){
var b = -1, body = -1, abs = -1;
try{
b = document.evaluate("boolean('a')", document, null, XPathResult.BOOLEAN_TYPE, null).booleanValue;
}catch(e){}
try{
body = !!document.evaluate("//body", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
}catch(e){}
try{
abs = document.evaluate("abs(-10.5)", document, null, XPathResult.NUMBER_TYPE, null).numberValue;
}catch(e){}
return {
"boolean": b,
"body": body,
"abs(-10.5)": abs,
};
}), undefined, 4));
phantom.exit();
输出:
{
"abs(-10.5)": -1,
"body": true,
"boolean": true
}