如何从selenium java中的json列表中获取第一个元素?

时间:2016-07-20 11:56:54

标签: java selenium selenium-webdriver

我有以下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>

3 个答案:

答案 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中还是时间问题还是?