使用Selenium提取父元素的属性值

extracting attribute value of parent element using Selenium

有 Java 经验,对 Selenium、定位器等很陌生

在一些 HTML 的深处隐藏着几个类似的部门:

<div tabgroup="topTabs__County Summary" sectiongroup class="field TextDescription tab">
  <label for="request_48543">
    <span class="label">Monument</span>
  </label>
</div>
<div tabgroup="topTabs__County Summary" sectiongroup class="field DropDownList readonly tab">
  <label for="request_48543">
    <span class="label">Geolocation</span>
  </label>
</div>
<div tabgroup="topTabs__County Summary" sectiongroup class="field SingleLineText tab">
  <label for="request_48543">
    <span class="label">Intersection</span>
  </label>
</div

我需要一些 Selenium 魔法来找到具有特定值的标签,然后回溯以找到该标签的分部,并从该分部提取给定属性的值。向下钻取似乎相当容易,但如何“备份”?

例如,给定“地理位置”我想提取“字段 DropDownList 只读选项卡”

我试过

WebElement chill = m.findElement(By.xpath("../..//span[text='Geolocation']"));

无果

你颠倒了进入父元素的顺序,你需要 () in textxpath 应该是

"//span[text()='Geolocation']/../.."

另一种选择是寻找带有“地理位置”文字的元素

"//div[.//span[text()='Geolocation']]"

这可能会给你更多的结果,取决于问题中没有的 html 结构。在这种情况下,您可以添加唯一属性,例如 tabgroup

"//div[.//span[text()='Geolocation']][@tabgroup]"

这将 return 仅 <div> 具有 tabgroup 属性的标签。

要在 chill WebElement

上使用 getAttribute("class") 提取数据