以下代码将显示“之前”和“之间”警报,但不会显示“之后”警报。
alert("before")
var test = document.evaluate('.//*',document,document.createNSResolver(document),XPathResult.ANY_TYPE,null)
alert(element.tagName)//alerts "TABLE"
alert("between")
test = document.evaluate('.//*',element,document.createNSResolver(document),XPathResult.ANY_TYPE,null)
alert("after")
这是作为selenium扩展的一部分编写的。在firebug中运行时,代码中的alert(document)
给出的结果与alert(document)
不同。 [object XULDocument] vs [object HTMLDocument]。
答案 0 :(得分:0)
您的第二个测试有一个未定义的变量element
。
答案 1 :(得分:0)
解决。
document
未引用selenium扩展中的HTML文档。但是每个元素都有一个对拥有它的文档的引用。在这种情况下
test = document.evaluate('.//*',element,document.createNSResolver(document),
XPathResult.ANY_TYPE,null)
变为
test = element.ownerDocument.evaluate('.//*',element,
element.ownerDocument.createNSResolver(element.ownerDocument),
XPathResult.ANY_TYPE,null)
依旧......
答案 2 :(得分:0)
Zackkenyon的一个变种回答,没有解析器似乎有效。
var rangee = table.ownerDocument.evaluate("./tbody/tr", table, null,
XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;