我正在寻找类似的东西:
getElementByXpath(//html[1]/body[1]/div[1]).innerHTML
Run Code Online (Sandbox Code Playgroud)
我需要使用JS获取元素的innerHTML(在Selenium WebDriver/Java中使用它,因为WebDriver本身无法找到它),但是如何?
我可以使用ID属性,但并非所有元素都具有ID属性.
[固定]
我正在使用jsoup在Java中完成它.这符合我的需要.
我一直在寻找除Sizzle之外的CSS选择器功能,我遇到过这个功能.
function SparkEn(xpath,root) {
xpath = xpath
.replace(/((^|\|)\s*)([^/|\s]+)/g,'$2.//$3')
.replace(/\.([\w-]+)(?!([^\]]*]))/g, '[@class="$1" or @class$=" $1" or @class^="$1 " or @class~=" $1 "]')
.replace(/#([\w-]+)/g, '[@id="$1"]')
.replace(/\/\[/g,'/*[');
str = '(@\\w+|"[^"]*"|\'[^\']*\')';
xpath = xpath
.replace(new RegExp(str+'\\s*~=\\s*'+str,'g'), 'contains($1,$2)')
.replace(new RegExp(str+'\\s*\\^=\\s*'+str,'g'), 'starts-with($1,$2)')
.replace(new RegExp(str+'\\s*\\$=\\s*'+str,'g'), 'substring($1,string-length($1)-string-length($2)+1)=$2');
var got = document.evaluate(xpath, root||document, null, 5, null);
var result=[];
while (next = got.iterateNext())
result.push(next);
return result;
}
Run Code Online (Sandbox Code Playgroud)
我觉得它真好太好了,这只是一个firefox功能(xpath?)还是慢?基本上为什么我会使用Sizzle呢?
javascript internet-explorer dom cross-browser document.evaluate
我正在尝试使用xpath查询查找xml节点.但我不能让它工作.在Firefox中,结果总是"未定义",并且chrome会抛出错误代码.
<script type="text/javascript">
var xmlString = '<form><name>test</name></form>';
var doc = new DOMParser().parseFromString(xmlString,'text/xml');
var result = doc.evaluate('/form/name', doc,
null, XPathResult.ANY_TYPE, null);
alert(result.stringValue);
</script>
Run Code Online (Sandbox Code Playgroud)
这段代码有什么问题?
我正在 WebView 中为 Android 创建“荧光笔”。我通过如下函数获取 HTML 中所选范围的 XPath 表达式
/HTML[1]/BODY[1]/DIV[1]/DIV[3]/DIV[1]/DIV[1]/text()[5]
现在我正在通过javascript中的这个函数评估上面的XPath表达式
var resNode = document.evaluate('/HTML[1]/BODY[1]/DIV[1]/DIV[3]/DIV[1]/DIV[1]/text()[5]',document,null,XPathResult.FIRST_ORDERED_NODE_TYPE ,null);
var startNode = resNode.singleNodeValue;
Run Code Online (Sandbox Code Playgroud)
但我得到了 startNode 'null'。
但是,这里有一个有趣的点:
如果我 使用相同的函数评估这个'/HTML[1]/BODY[1]/DIV[1]/DIV[3]/DIV[1]/DIV[1]' XPath 表达式,它会给出正确的节点,即'div'。
两个 XPath 之间的区别在于,之前的 XPath 包含一个 textNode,之后只包含 div。
但同样的事情在桌面浏览器上运行良好。
编辑的 示例 HTML
<html>
<head>
<script></script>
</head>
<body>
<div id="mainpage" class="highlighter-context">
<div> Some text here also....... </div>
<div> Some text here also.........</div>
<div>
<h1 class="heading"></h1>
<div class="left_side">
<ol></ol>
<h1></h1>
<div class="text_bio">
In human beings, height, colour of eyes, complexion, chin, etc. are
some …Run Code Online (Sandbox Code Playgroud) 我正在编写一个 Chrome 扩展程序,它将搜索 DOM 并突出显示页面上的所有电子邮件地址。我发现这是为了查找页面上的符号,但它只在有一个电子邮件地址时正确返回,当找到多个地址时它会中断。
found = document.evaluate('//*[contains(text(),"@")]', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0);
Run Code Online (Sandbox Code Playgroud)
如果找到多个返回倍数,正确的方法是什么?
请不要用仇恨棒打我.我是个菜鸟.隐藏在角落里
我是Greasemonkey及其语法的新手,所以非常感谢您的帮助!
我试图根据他们的src url中包含的单词突出显示几个图像但是如果src不是完整匹配,我无法找出多个条件的正确语法.
var snapImages =document.evaluate("//img[contains(@src, 'car']", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
for (var i = snapImages.snapshotLength - 1; i >= 0; i--) {
var elmImage = snapImages.snapshotItem(i);
elmImage.style.MozOutline = "5px solid red";
}
Run Code Online (Sandbox Code Playgroud)
这个例子有效,但我还需要几个条件.喜欢(@src,'bike'),(@ src,'bus')等.再次,我为新问题道歉.什么是正确的语法?
非常感谢你!
-Rocki
如何修复常规JavaScript代码,使其不会显示"未定义"并显示输入字段的值?jQuery代码工作正常,并在同一页面上正确显示输入字段值.
常规JavaScript:
var obj = document.evaluate('//html/body/form/div[4]/label/input',document,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);
alert(obj.value);
Run Code Online (Sandbox Code Playgroud)
JQuery 1.7.1代码:
var obj = $('html > body > form > div:nth-child(4) > label > input');
alert(obj.value);
Run Code Online (Sandbox Code Playgroud) 我试图用来document.evaluate()从元素中提取某些子元素<svg>.但是我只是通过提取<svg>自己来解决问题.我可以提取所有内容<svg>,但不能再提取.例如,这很有效:
document.evaluate('//*[@id="chart"]/div/div[1]/div', document, null, XPathResult.ANY_UNORDERED_NODE_TYPE, null).singleNodeValue)
Run Code Online (Sandbox Code Playgroud)
这给了我(缩短):
<div style="position: absolute; left: 0px; top: 0px; width: 100%; height: 100%;" aria-label="Et diagram.">
<svg width="600" height="400" aria-label="Et diagram." style="overflow: hidden;"></svg>
<div aria-label="En repræsentation i tabelformat af dataene i diagrammet." style="position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden;"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
然后我会假设这很简单
//*[@id="chart"]/div/div[1]/div/svg
Run Code Online (Sandbox Code Playgroud)
会给我<svg>- 但没有任何作用.尝试了所有回复类型:
for (var type=XPathResult.ANY_TYPE; type<XPathResult.FIRST_ORDERED_NODE_TYPE+1; type ++) {
console.dir(
document.evaluate('//*[@id="chart"]/div/div[1]/div/svg', document, null, type, null)
);
}
Run Code Online (Sandbox Code Playgroud)
我得到invalidIteratorState …
我有以下......
var result = doc.evaluate("//input[@class=\"form_field_as as-input\"]",
context,
null,
XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
null);
for(var i = 0; i < result.snapshotLength; i++) {
a[i] = result.snapshotItem(i);
}
return a;
Run Code Online (Sandbox Code Playgroud)
我正在评估的表达式来自输入.代码在FireFox中工作正常,但是当我在Chrome上测试时,它不会返回任何内容.我究竟做错了什么?
我正在评估的输入是......
<input type="text" id="sharees" class="form_field_as">
Run Code Online (Sandbox Code Playgroud)