您的方法存在一些问题。
.implicitlyWait()
实际上并没有等待。它为驱动程序实例设置超时,因此您只需要设置一次,而不必在每次等待时调用它。driver.findElement(...).isEmpty()
不会编译。也许是你的意思.findElements()
?无论哪种方式,.isEmpty()
vs的.size() > 0
速度差异都可以忽略不计。主要问题是在检查不存在的内容时启用了隐式等待…尤其是10s等待。这意味着,每次检查元素时,Selenium都会等待10秒,即使它期望它不存在。
关闭隐式等待(将其设置为0),然后对您不希望出现的元素进行存在性检查,然后再将其重新打开,将为您提供更好的服务。那将是10s
x您希望不存在的存在检查数。根据您执行的存在检查次数,这可能会花费大量时间。不利的一面是,如果您有一个带有后台进程的复杂页面,则需要先等待页面(或页面的一部分)完成加载,然后再检查是否隐式等待关闭元素的存在。
旁注…硒贡献者指出,不应使用隐式等待。使用
WebDriverWait代替,但这是一个完整的其他讨论。



