ava*_*ske 17 xpath string-matching
我知道文档中属性的部分值,但不是整个事物.有没有我可以用来表示任何价值的角色?例如,输入的标签值是"A.选择1".我知道它说"选择1",但不知道它是否会在"选择1"之前说"A"或"B".以下是相关的HTML.输入和标签还有其他属性,但每次呈现页面时它们都不相同,所以我不能将它们用作引用:
<tr>
<td><input type="checkbox" /><label>A. Choice 1</label></td>
</tr><tr>
<td><input type="checkbox" /><label>B. Choice 2</label></td>
</tr><tr>
<td><input type="checkbox" /><label>C. Choice 3</label></td>
</tr><tr>
<td><input type="checkbox" /><label>D. Choice 4</label></td>
</tr>
Run Code Online (Sandbox Code Playgroud)
这是我用来选择标签旁边的输入的值为"选择1" 的XPath表达式,除了A在HTML前面的前面:
//td[label="Choice 1"]/input
Run Code Online (Sandbox Code Playgroud)
我不知道HTML中的A是A还是A,等等.但是我确实知道正确的输入总是会有旁边的Choice 1文本.如果标签包含选项 1,如何选择它,而不是等于选择1?
Ron*_*erg 36
您的XPath表达式应如下所示:
//td[contains(@label, 'Choice 1')]/input
Run Code Online (Sandbox Code Playgroud)
您选择td具有包含标签的所有元素,Choice 1然后选择这些input元素内的td元素.
编辑:Tomalak的评论正确地暗示了一个改进,以防止匹配'选择11'(或'选择12345',...).
找到Ronald的解决方案,同时试图找到一种方法来测试节点是否具有非空的属性'align'或包含文本值'text-align'的属性'style'.这些是有问题的"节点":
<node>
<p>This is left-aligned.</p>
<div align="left" >This is aligned LEFT using HTML attribute.</div>
<p style="text-align: center;" >This is centered using CSS style attribute.</p>
<div align="center" >This is CENTERED.</div>
<p style="text-align: right;" >This is right-aligned.</p>
</this>
Run Code Online (Sandbox Code Playgroud)
这个xpath表达式起作用了 - 感谢Ronald的答案指出了我正确的方向:
//*[contains(@style, 'align') or @align!='']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24729 次 |
| 最近记录: |