5

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

如何以及何时使用其中一种?

4

2 回答 2

1

我的理解是,您会同时使用需要一些时间来加载的组件或元素,并且验证加载的含义非常复杂,可以抽象为单独的方法isLoaded。不同的是,对于LoadableComponent调用get()必须给你一个完全加载的组件,否则会抛出错误,而SlowLoadableComponent可能会被卸载返回。

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

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

于 2020-10-15T07:50:11.470 回答
1

SlowLoadableComponent是 的子类,但LoadableComponent不必load() 返回时完成加载。在调用 load() 之后,isLoaded() 方法将失败,直到组件完全加载。

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

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

于 2020-10-21T03:31:22.720 回答