我有一个带有一些嵌套div标签的html页面。标签有ID,但不是固定值。当用户在页面上添加和删除项目时,它会发生变化。 找到我要找的元素的最佳方法是通过文字。
每个父级都有“清洁”文本 - 无法从此处找到,因为它不是唯一的。 每个父母都有一个孩子,孩子文本的末尾部分是不同的 例如。文字是“Clean feed crm”或“Clean feed escr”等等
E.g。家长“干净” - >孩子“清洁饲料crm” 家长“干净” - >孩子“清洁饲料escr”
我想在子标签“Clean feed escr”中找到父标记文本“Clean” 从下面的html示例中,它的当前ID是id =“operations_edit_process_list_task_4 但是这个ID会改变,所以我不能使用ID来获取这个元素。
我可以使用XPATH找到孩子“Clean feed escr”。我不知道如何通过标签来获取“清洁”文本
我的XPATH是:
//span[contains(text(), "Clean feed escr")]
HTML示例是(我删除了一些div标签,否则粘贴太长了)
<div id="operations_edit_process_list_task_3">
<span>
<span class="myinlineblock" title="Clean" style="white-space:nowrap;overflow:hidden;text-overflow:ellipsis;empty-cells:show;width:100%;">Clean</span>
</span>
<span/>
<span>
</div>
// Few More div tags
<div id="operations_edit_process_list_task_3_1">
<span>
<span class="myinlineblock" title="Clean feed escr" style="white-space:nowrap;overflow:hidden;text-overflow:ellipsis;empty-cells:show;width:100%;margin-right:-14px;">Clean feed escr</span>
</span>
<span>
</div>
// Few More div tags
<div id="operations_edit_process_list_task_4">
<span>
<span class="myinlineblock" title="Clean" style="white-space:nowrap;overflow:hidden;text-overflow:ellipsis;empty-cells:show;width:100%;">Clean</span>
</span>
<span/>
<span>
</div>
// Few More div tags
<div id="operations_edit_process_list_task_4_1">
<span>
<span class="myinlineblock" title="Clean feed orchard" style="white-space:nowrap;overflow:hidden;text-overflow:ellipsis;empty-cells:show;width:100%;margin-right:-14px;">Clean feed orchard</span>
</span>
</div>
我认为祖先可以用到它的直接父标签,但我不知道它的语法。 我尝试过以下方法:
//span[contains(text(), "Clean feed escr")]//ancestor::div[contains(text(), "Clean")]
谢谢, 里亚兹
答案 0 :(得分:1)
在我看来,这将是一个更清洁的方法:
"//div[.//span/text()='Clean feed escr']/following::div[.//span/text()='Clean'][1]"
答案 1 :(得分:1)
通过过滤span子项来获得下一个div兄弟:
"//span[@title='Clean feed escr']/ancestor::div[1]/following-sibling::div[.//span[@title='Clean']][1]"
答案 2 :(得分:1)
借助以下建议,我设法使用Preceding轴找到元素。之前是因为我想把树上到它的父母那里。不是&#39;以下&#39;轴。下面是树下到它的孩子们。 Xpath是:
//div[.//span/text()='Clean feed escr']/ancestor::div[1]/preceding::div[1]//span[@title="Clean"]
答案 3 :(得分:0)
This视频肯定会帮助你,因为它已经正确定义了XPath的所有方法,如父级,后级兄弟,兄弟之前以及其他方法。