Java Selenium是一种快速查找元素是否存在的方法

Java Selenium是一种快速查找元素是否存在的方法,java,selenium,Java,Selenium,我正在使用Selenium在网页上进行一些搜索和测试。在这个页面上有大量的元素可能存在,也可能不存在。大多数情况下,它们并不存在,但在它们存在时找到它们是至关重要的。我用过 WebElement.findElement(By); WebElement.findElements(By); WebDriver.findElement(By); WebDriver.findElements(By); 所有这些方法在找不到任何与By参数匹配的元素时都非常耗时。有没有更快的办法?在这一点上,我正在考虑对

我正在使用Selenium在网页上进行一些搜索和测试。在这个页面上有大量的元素可能存在,也可能不存在。大多数情况下,它们并不存在,但在它们存在时找到它们是至关重要的。我用过

WebElement.findElement(By);
WebElement.findElements(By);
WebDriver.findElement(By);
WebDriver.findElements(By);
所有这些方法在找不到任何与By参数匹配的元素时都非常耗时。有没有更快的办法?在这一点上,我正在考虑对可能存在或可能不存在的元素使用多线程,但这是我不想打开的另一整罐蠕虫


链接的重复问题没有解决我问题的主要问题。主要问题是findElement和findElement在找不到任何元素时返回所需的时间。

让我分别回答您的问题:

  • 大量可能存在或可能不存在的元素
    :我们不应该搜索不存在的元素。相反,如果元素是不可见的,我们应该尝试将元素带到内部与之交互
  • 方法非常耗时
    findElement
    findElement
    基于相同的
    算法
    。所以在功能上两者都有相似的性能。因此,为了更好地与这些元素交互,我们需要构造唯一的
    css
    xpath
    ,以及
    预期条件的匹配子句
  • WebDriver.findelelement(By)
    WebElement.findelelement(By)
    :作为
    WebElement.findelelement(By)
    始终携带
    实例的基本引用,最可能是
    在性能方面始终具有优势

可能重复的代码中是否有隐式等待?我有。有时候我不是一个聪明人。设置为10秒。那会解决问题的。谢谢实际上,这提出了第二个问题。有没有办法完全删除隐式等待?是的,删除对隐式等待的所有引用,当需要等待时,添加
WebDriverWait