【问题标题】:How to return an empty List when nothing found什么都没有找到时如何返回一个空列表
【发布时间】:2016-10-17 22:12:50
【问题描述】:

我想知道当我试图找到一些WebElement 但没有找到时如何返回一个空的List。 当然我想避免崩溃,所以这是我尝试过的:

def getList(): List[WebElement] = {

    try {
      driver.fineElements(By.xpath("bla bla))
    }catch{
      case e: TimeoutException => // What should i put here ???
    }
  }

【问题讨论】:

  • 更紧密地复制这个stackoverflow.com/a/6521834/21755
  • 接受的答案是错误的。它甚至不起作用。请接受 Mobrockers 的回答。
  • 嗯,它有效,因为没有异常,所以没有必要抓住一个。不过,我会删除它,因为它并没有真正解决问题,只是因为它被接受了,所以我不能:(。
  • 我已将我的答案标记为供版主删除

标签: scala selenium


【解决方案1】:

编辑:

我没有注意到您使用的是 scala 而不是 java,抱歉,但它在 Scala 中的工作原理相同。来自 scala 文档:

findAll 方法返回所有匹配元素的不可变 IndexedSeq。如果没有元素匹配查询,findAll 返回一个空的 IndexedSeq。

如果没有找到任何元素,它已经返回一个空列表,并且不会导致异常。

scala 的 findAll 方法会做同样的事情。

如果您使用的不是 scalatest 而是 Java selenium 包,同样如此。 findElements 将在未找到任何元素时返回一个空列表,并且永远不会抛出 TimeoutException。

【讨论】:

  • OP 没有使用findAll
  • 硒中没有fineElement...从我从文档中收集到的信息来看,scala 可以使用findElements 或findAll,它们是相同的。在这两种情况下,它都会返回一个空列表,并且这个 try catch 异常将永远作为 findElements 或 findAll 不会抛出异常。
  • 好的,明白了。由于 OP 指定 getList 返回 List[WebElement],我们可以假设他使用的是 findElements,而不是 findElement。所以它会像你说的那样返回一个空列表
  • 为此创建一个函数有点傻……它是单行的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-05
  • 2010-12-15
  • 2016-03-13
  • 2017-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多