我有以下json格式的id列表。我想使用java访问selenium中的第一个id。我尝试使用
String item = driver.findElement(By.xpath("//ul//li[1]")).getText();
但没有帮助。
<body>
<div id="json">
<span class="collapser"></span>
{
<ul class="obj collapsible">
<li>
<span class="prop" title="<root>.hdps">
<span class="q">"</span>
hdps
<span class="q">"</span>
</span>
:
<span class="collapser"></span>
[
<ul class="array collapsible">
<li>
<span class="num">65085</span>
,
</li>
<li>
<span class="num">65089</span>
,
</li>
<li>
<span class="num">65711</span>
,
</li>
</ul>
]
</li>
</ul>
}
</div>
答案 0 :(得分:0)
我的理解是你试图读取元素的ID属性的值。我真的不确定你问题的意图。但这就是你如何获得ID的价值。
您需要使用各种元素定位器之一来引用元素。在这种情况下,您已利用By.xpath()
。您可以验证Firefox XPATH
检查程序使用的Xpath
的正确性。使用正确的XPATH
后,您将获得webElement
的参考。
WebElement wElement = driver.findElement(By.xpath("//ul//li[1]"));
// validate the correct XPATH using available tools - ex : firefox xpath checker etc.
您需要获取元素的id
属性的值。
String requiredID = wElement.getAttribute("id");
让我知道这是否有效。
答案 1 :(得分:0)
正如 pendem 回答的那样,您可以使用xpath获得您想要的第一个ID。但是在这里我发现你使用的xpath找到2个元素,因为有两个 ul 元素有 li 。如果你使用具有特定ul和类属性的xpath作为 - .// ul [@ class =&#34; array collapsible&#34;] // li [1] 将起作用。
答案 2 :(得分:0)
如果您提供了所有相关的HTML,则应该如下所示。
String id = driver.findElement(By.cssSelector("span.num")).getText();
这只返回ID的第一个实例。
如果这不起作用,你将不得不做更多的挖掘,例如这是在IFRAME中还是时间问题还是?