【问题标题】:How to locate a list element (Selenium)?如何定位列表元素(Selenium)?
【发布时间】:2013-04-06 19:06:21
【问题描述】:

我有以下清单:

<ul>
<li> item1 is red
</li>
<li> item1 is blue 
</li>
<li> item1 is white  
</li>
</ul>

我尝试了以下方法来打印第一项:

String item = driver.findElement(By.xpath("//ul//li[0]")).getText();
        System.out.println(item);

但是,我得到:NoSuchElementException... 我可以使用 cssSelector 但我没有 ul

的 id

【问题讨论】:

  • @fredrik 有正确的答案。

标签: java list xpath selenium nosuchelementexception


【解决方案1】:

我认为 XPath 应该是"//ul/li[1]"。在 selenium 中,第一项是 1,而不是 0。看here

【讨论】:

  • +1 这是受过基于 C 语言培训的程序员的常见问题。 XPath 从 1 开始计数,而不是 0。
【解决方案2】:

我知道这不如其他答案有效,但我认为它会给你结果。

WebElement element = (WebElement) ((JavascriptExecutor)driver).executeScript("return $('li').first()");

String item = element.getText()

【讨论】:

  • 不会对此投反对票,因为它会起作用,但您正在玩一个危险的游戏:您假设 jQuery 已加载。 jQuery 不是标准。
【解决方案3】:
(//ul/li)[1]

这会选择 XML 文档中的第一个 li 元素,它是 ul 元素的子元素

请注意表达式

//ul/li[1]

选择任何li 元素,它是其ul 父元素的第一个子元素。因此,这个表达式通常可以选择多个元素。

【讨论】:

    【解决方案4】:

    这是你的做法:

    List<WebElement> items = driver.findElements(By.cssSelector("ul li"));
    if ( items.size() > 0 ) {
      for ( WebElement we: items ) {
       System.out.println( we.getText() );
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-08-24
      • 1970-01-01
      • 2019-01-08
      • 2019-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-15
      相关资源
      最近更新 更多