0

下面的代码将到达“之前”和“之间”警报,但不会到达“之后”警报。

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)[对象 XULDocument] 与 [对象 HTMLDocument]。

4

3 回答 3

0

您的第二个测试有一个未定义的变量element

于 2013-02-15T22:39:10.880 回答
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)

等等...

于 2013-02-19T14:57:36.453 回答
0

没有解析器的 Zackkenyon 答案的变体似乎可以工作。

var rangee = table.ownerDocument.evaluate("./tbody/tr", table, null,
XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
于 2016-02-25T14:44:50.483 回答