Selenium - LoadableComponent 和 SlowLoadableComponent 有什么区别

Selenium - what is the difference between LoadableComponent and SlowLoadableComponent

在Selenium支持方面LoadableComponent和SlowLoadableComponent的具体区别是什么类?

如何以及何时使用一个而不是另一个?

我的理解是,对于需要花费一些时间加载的组件或元素,您会同时使用这两种方法,而且验证加载的含义非常复杂,需要抽象为单独的方法 isLoaded。不同之处在于,对于 LoadableComponent,对 get() 的调用必须为您提供一个完全加载的组件,否则会引发错误,而 SlowLoadableComponent 可能会在未加载的情况下返回。

也就是说,LoadableComponent 将用于您仅在完全加载并准备好使用后才感兴趣的元素。您不介意等待它们完全加载并且没有理由在它们处于中间状态时与它们进行交互。如果他们无法加载 - 这意味着测试结束。我想象的主要用例只是隐藏页面加载背后的逻辑并等待它。

另一方面,

SlowLoadableComponent 可以在完全加载之前从其 get 方法返回,让您可以控制诸如在测试中对其加载时间进行断言(而不是将它们硬编码到组件)或有机会与可能影响组件加载的其他元素交互。我可以想象一个依赖于 SlowLoadableComponent 的测试用例在某些情况下永远不会被完全加载(例如,未勾选复选框)这不是执行失败的原因。

SlowLoadableComponentLoadableComponent 的子类,但 在 load() returns 时不必完成加载 。调用 load() 后,isLoaded() 方法将失败,直到组件完全加载。

你使用SlowLoadableComponent,如果你不需要立即调用get()方法(因为它需要它完全加载)并且你想先继续执行一些其他操作。但是一旦您需要执行 get(),您应该应用 isLoaded() 以确保您可以继续您的代码。

总的来说,SlowLoadableComponent 可以加快代码的执行速度,如果您在后期需要 get() 或者可能根本不需要它。