使用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 text
。 xpath
应该是
"//span[text()='Geolocation']/../.."
另一种选择是寻找带有“地理位置”文字的元素
"//div[.//span[text()='Geolocation']]"
这可能会给你更多的结果,取决于问题中没有的 html 结构。在这种情况下,您可以添加唯一属性,例如 tabgroup
"//div[.//span[text()='Geolocation']][@tabgroup]"
这将 return 仅 <div>
具有 tabgroup
属性的标签。
要在 chill
WebElement
上使用 getAttribute("class")
提取数据
有 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 text
。 xpath
应该是
"//span[text()='Geolocation']/../.."
另一种选择是寻找带有“地理位置”文字的元素
"//div[.//span[text()='Geolocation']]"
这可能会给你更多的结果,取决于问题中没有的 html 结构。在这种情况下,您可以添加唯一属性,例如 tabgroup
"//div[.//span[text()='Geolocation']][@tabgroup]"
这将 return 仅 <div>
具有 tabgroup
属性的标签。
要在 chill
WebElement
getAttribute("class")
提取数据