ここに私が実行した小さなテストがありexpect.js
ます:
describe('xpath', function () {
it('finds attribute nodes', function () {
$(document.body).append('<string fooBar="bar"><data id="xyz"></data></string>');
var xyz = document.getElementById('xyz');
expect(xyz).not.to.be(null);
var nodes = document.evaluate('../@fooBar', xyz, null, XPathResult.ANY_TYPE, null);
var element = nodes.iterateNext();
expect(element.nodeValue).to.equal('bar');
});
});
Testacular を使用して Chrome と Firefox でテストしていますが、Firefox では成功しますが、Chrome では失敗しelement
、null
. 私にとって本当にクレイジーな部分は、fooBar
just に変更するとfoo
、両方のシステムに渡されることです。Foo
の代わりに使用すると、Chrome も壊れfoo
ます。つまり、検索対象の属性に大文字が含まれていると、Chrome での XPath クエリが機能しなくなるようです。これは正常な動作ですか?何か不足していますか?それともChromeのバグですか?
更新 1
Google の Wicked Good XPath を追加したところ、Internet Explorer も動作するようになりましたが、Chrome はまだ失敗します。
更新 2
実際の属性に大文字が含まれていても、XPath 値がすべて小文字の場合、XPath クエリは Chrome で機能します。