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")

これは、セレン拡張機能の一部として記述されています。コード内では、firebug で実行した場合とalert(document)は異なる結果が得られます。alert(document)[オブジェクト XULDocument] vs [オブジェクト HTMLDocument]。

4

3 に答える 3

0

リゾルバーを使用しない Zackkenyon の回答の変形が機能するようです。

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

2 番目のテストには undefined variable がありますelement

于 2013-02-15T22:39:10.880 に答える
0

解決しました。

documentSelenium 拡張機能の 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 に答える