问题描述
<div class="generic classname" id="generic ID name" > // div1
<div class="presentation" id="body presentation"> // div2
<font>unique text</font>
<div class= "generic classname" id="generic ID name""> //div3
// under this div I have the table entry.
// multiple <td> and <tr>
</div>
</div>
</div>
我的工作是匹配div 2中的“唯一文本”,因此我可以找到div 1号元素,然后获取div 3中的所有表。
问题是我不确定如何找到没有唯一类名或ID名称的 div 。我不能使用完整的XPath,因为表会更改并且div会随机更改。
解决方法
使用下面的xpath
和div 2
来查找唯一的文本,然后在div中查找div和表。
//div[./font[text()='unique text']]/div[1]/table
,
如果您的所有div如您所说都是嵌套的,并且您的目标是在div3中获取表,则无需获取父级。
这是一个选择:
//font[text()='unique text']/following-sibling::div
此xpath找到具有唯一文本的font
,然后是同级(同父)div
此xpath标识符是另一种选择:
//font[text()='unique text']/parent::*/div
此xpath找到具有唯一文本的font
,然后将其作为*
(任意)父级,然后在其中获取相关的div。
如果要“ div1”,可以再次使父轴向上。
这是基于您的html外观:
<div class="generic classname" id="generic ID name" >
<div class="presentation" id="body presentation">
<font>unique text</font>
<div class="generic classname" id="generic ID name"">
// under this div I have the table entry.
// multiple <td> and <tr>
</div>
</div>
</div>
不同的HTML需要不同的xpath,因此请说出是否需要更新。
,按照HTML:
<div class="generic classname" id="generic ID name" > // div1
<div class="presentation" id="body presentation"> // div2
<font>unique text</font>
<div class= "generic classname" id="generic ID name"> //div3
// under this div I have the table entry.
// multiple <td> and <tr>
</div>
</div>
</div>
由于用例不依赖于任何<div1>
属性,因此可以轻松避免考虑使用<div1>
。
解决方案
要找到第三个<div>
,您可以采用以下四种方法:
-
使用文本
unique text
和<div> attributes
://font[text()='unique text']//following::div[@class='generic classname' and @id='generic ID name']
-
使用文本
unique text
和 index ://font[text()='unique text']//following::div[1]
-
使用带有子标签
<div2>
的{{1}},其文本为<font>
和unique text
:<div> attributes
-
使用带有子标签
//div[./font[text()='unique text']]//following-sibling::div[@class='generic classname' and @id='generic ID name']
且文本为<div2>
和 index 的<font>
:unique text
我将使用js搜索或获取“唯一文本”的标签。
<script>
// get the element
let elem = document.getElementsByName('font');
</script>
https://www.w3schools.com/jsref/met_doc_getelementsbyname.asp
,为您提供的另一种选择:
//div[font='unique text']/div