当前位置: 首页 > 知识库问答 >
问题:

Selenium XPATH已找到子div标记如何转到包含文本参数的父标记

饶骁
2023-03-14

我有一个带有一些嵌套div标签的html页面。标签确实有一个ID,但它不是固定值。它会随着用户在页面上添加和删除项目而改变。找到我要找的元素的最佳方法是通过文本。

每个父级都有文本“Clean”-无法从此处定位,因为它不是唯一的。每个父项都有一个子项,子项中文本的结尾部分不同
例如,文本为“Clean feed crm”或“Clean feed escr”,等等

E、 g.父级“干净”-

我想从子“清洁饲料escr”中找到父标签文本“清洁”从下面的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")]

谢了Riaz

共有3个答案

齐文栋
2023-03-14

在我看来,这将是一种更干净的方法:

"//div[.//span/text()='Clean feed escr']/following::div[.//span/text()='Clean'][1]"
赏夕
2023-03-14

在以下建议的帮助下,我成功地使用前面的轴定位了元素。因为我想上树找到它的父级。不是“跟随”轴。下面是树下的孩子们。Xpath是:

//div[.//span/text()='Clean feed escr']/ancestor::div[1]/preceding::div[1]//span[@title="Clean"]
百里沛
2023-03-14

要通过筛选span子级来获取下一个div同级,请执行以下操作:

"//span[@title='Clean feed escr']/ancestor::div[1]/following-sibling::div[.//span[@title='Clean']][1]"
 类似资料:
  • 我最近遇到了一个问题。 我需要在页面上找到一个包含特定文本的div标签。问题是,文本被内部链接标记分成两部分,因此超文本标记语言树看起来像: 为了唯一地标识div标记,我需要div文本的两部分。当然,我会想出类似XPath的方法: 但是,它不起作用,第二部分找不到。 什么是唯一描述这种标签的最佳方法?

  • 我试图在HTML的pre标签中包装文本,但它不起作用。我使用下面的CSS作为我的标签。 我从如何在pre标记中换行文本? 我已添加

  • 我想找到一个标题包含字符串的锚 这就是我所拥有的: 我需要抓住这些锚。我只知道他们的书名里有Permalink这个词。标题的其余部分各不相同。 我试过这个: 我希望得到元素,但什么也得不到。

  • 对于以下超文本标记语言: 我们可以将第一行与这个xpath匹配-- 我们无法将第2行与此xpath匹配-- BR标记正在运行。Selenium IDE的“Select”功能可以获取DIV标记xpath,但不能深入到它所包含的文本中。 有什么建议吗?

  • 我正在尝试获得在rajawali vuforia上发现的标记的数量。 虽然我们有方法: 1-

  • 问题内容: 我正在尝试使用IMAP(永久)将消息/消息列表标记为“ \ SEEN ” 。但是,与获取,搜索和朋友不同,imap软件包上似乎没有标记功能。我应该发送带有UID的原始命令吗? 问题答案: 您必须选择可写邮箱 然后只需执行以下操作 最后,您将不得不删除: 而且你应该很好:-) 并且不要犹豫地浏览文档/源代码,这很容易理解,您将找到所需的一切。