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

Python 2.7 Selenium XPATH已找到子div标记,如何转到包含文本参数的父标记,python-2.7,selenium,xpath,selenium-webdriver,Python 2.7,Selenium,Xpath,Selenium Webdriver,我有一个带有一些嵌套div标记的html页面。标记确实有ID,但不是固定值。它会随着用户在页面上添加和删除项目而更改。 找到我要查找的元素的最佳方法是通过文本 每个父级都有文本“Clean”-无法从此处定位,因为它不是唯一的。 每个父项都有一个子项,子项中文本的结尾部分不同。 例如,文本为“清洁饲料crm”或“清洁饲料escr”等 例如,父级“干净”->子级“干净饲料crm” 父级“干净”->子级“干净饲料escr” 我想找到子“Clean feed escr”中的父标签文本“Clean” 从下

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

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

例如,父级“干净”->子级“干净饲料crm” 父级“干净”->子级“干净饲料escr”

我想找到子“Clean feed escr”中的父标签文本“Clean” 从下面的html示例中,它的当前ID为ID=“操作”\u编辑”\u过程”\u列表”\u任务4 但此ID将更改,因此我无法使用此ID访问此元素

我可以使用XPATH找到子“Clean-feed-escr”,我不知道如何上移标签以获得“Clean”文本

我的XPATH是:

//span[contains(text(), "Clean feed escr")]
HTML示例是(我已经删除了一些div标记,否则将太长而无法粘贴)

谢谢,
Riaz

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

"//div[.//span/text()='Clean feed escr']/following::div[.//span/text()='Clean'][1]"

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

"//span[@title='Clean feed escr']/ancestor::div[1]/following-sibling::div[.//span[@title='Clean']][1]"

在下面的建议的帮助下,我成功地使用前一个轴定位元素。前一个是因为我想在树上找到它的父元素。而不是“后一个”轴。后一个是在树下找到它的子元素。 Xpath是:

//div[.//span/text()='Clean feed escr']/ancestor::div[1]/preceding::div[1]//span[@title="Clean"]

视频肯定会对您有所帮助,因为它正确地定义了所有XPath方法,如parent、following sibling、Previous sibling和may other。

感谢您的建议。这为我突出显示了页面上的许多元素。我想找到在this div标记中文本为Clean的元素,我无法通过ID找到,因为ID值更改。@RiazLadhani-很抱歉误会。我已经编辑了我的答案。这是沿着树向下并突出显示底部的元素。我需要沿着树向上走。下面是沿着树向下走的。祖先向上走的。我尝试了下面的xpath,我有两个元素与文本Clean一起定位。这一个很好,非常有用ose//div[.//span/text()='Clean feed escr']/祖先::div//span[text()='Clean']谢谢你的建议。这很有帮助。html中有很多div标记。我还没有粘贴完整的html。我已经使用以下Xpath://div[.//span/text()='Clean feed escr']/祖先::div[1]/previous::div[1]//span[@title=”找到了元素清洁“]
"//span[@title='Clean feed escr']/ancestor::div[1]/following-sibling::div[.//span[@title='Clean']][1]"
//div[.//span/text()='Clean feed escr']/ancestor::div[1]/preceding::div[1]//span[@title="Clean"]