机器人框架:等待元素可见与元素应该可见,哪个更好用?
Robot Framework: Wait Until Element Is Visible vs. Element Should Be Visible, which one is better to use?
我知道它们都可以用来验证元素是否出现在页面上,但我想知道它们对性能和可读性的影响。所以我的问题是,假设您有 20 个元素要检查页面,
- 对所有 20 个元素使用 等待元素可见 是否更好?
或
- 对一个元素(例如 header 文本)使用 等待元素可见 让我的自动化脚本知道页面已加载然后使用其余元素(例如表单字段)应该可见?
是的,事实上它们都可用于验证元素是否出现在页面上,但粗略地说,您可以设计测试以获得更好的性能。
理想情况下,Waits 应严格按照您的 Usecase 和 Test Steps 实施.
使用Wait Until Element Is Visible
:如果您的用例涉及所有20个元素的可见性,尽管等到元素可见是最合适的。
对 header 文本使用 Wait Until Element Is Visible
然后使用 Element Should Be Visible
:如果您的 用例 涉及任何元素的可见性,因此 Wait Until Element Is Visible for header text
将是一个完整的 开销 。由于您没有使用 header 文本 进行验证,因此不需要执行此步骤。相反,您应该直接诱导 Wait 以获得所需元素的 visibility.
在严格的性能比较中,Wait Until Element Is Visible
与 Element Should Be Visible
在 已经存在于 DOM[=28 中的元素上的执行速度=],其实是一样的。
他们都做同样的事情——在 DOM 中找到元素,并调用 selenium 的 is_visible()
方法。不同之处在于 Wait Until
循环并在两个步骤中的任何一个失败时重复。
因此对于您的(或类似的)情况,当一个元素(header)的存在应该保证其他 19 个也已经加载时,使用哪个并不重要。
如果您在 header 上使用 Wait Until ...
并在其他上使用 Element Should Be Visible
,您也会在您的案例中测试该假设。自然地,如果除第 19 个元素之外的所有元素都与 header 一起加载,则该案例将失败。
如果您在所有元素上使用 Wait Until ...
,则通过的机会会更高 - 如果任何元素的添加和可视化速度比其余元素慢,kw 将等待它。显然,这种情况会导致运行时间变慢——因为要等待条件满足。
至于使用一个与另一个的可读性方面,我不会对此发表评论。这是实现和代码结构的问题;你总是可以让一些简单的东西看起来很可怕,或者以一种漂亮的方式呈现一个复杂的解决方案 :)。与 python 相同,允许您编写像诗歌一样的代码,或者丑陋的一团糟(某些 SO 答案也是如此:D);你真的犯了这一切:)
我知道它们都可以用来验证元素是否出现在页面上,但我想知道它们对性能和可读性的影响。所以我的问题是,假设您有 20 个元素要检查页面,
- 对所有 20 个元素使用 等待元素可见 是否更好?
或
- 对一个元素(例如 header 文本)使用 等待元素可见 让我的自动化脚本知道页面已加载然后使用其余元素(例如表单字段)应该可见?
是的,事实上它们都可用于验证元素是否出现在页面上,但粗略地说,您可以设计测试以获得更好的性能。
理想情况下,Waits 应严格按照您的 Usecase 和 Test Steps 实施.
使用
Wait Until Element Is Visible
:如果您的用例涉及所有20个元素的可见性,尽管等到元素可见是最合适的。对 header 文本使用
Wait Until Element Is Visible
然后使用Element Should Be Visible
:如果您的 用例 涉及任何元素的可见性,因此Wait Until Element Is Visible for header text
将是一个完整的 开销 。由于您没有使用 header 文本 进行验证,因此不需要执行此步骤。相反,您应该直接诱导 Wait 以获得所需元素的 visibility.
在严格的性能比较中,Wait Until Element Is Visible
与 Element Should Be Visible
在 已经存在于 DOM[=28 中的元素上的执行速度=],其实是一样的。
他们都做同样的事情——在 DOM 中找到元素,并调用 selenium 的 is_visible()
方法。不同之处在于 Wait Until
循环并在两个步骤中的任何一个失败时重复。
因此对于您的(或类似的)情况,当一个元素(header)的存在应该保证其他 19 个也已经加载时,使用哪个并不重要。
如果您在 header 上使用 Wait Until ...
并在其他上使用 Element Should Be Visible
,您也会在您的案例中测试该假设。自然地,如果除第 19 个元素之外的所有元素都与 header 一起加载,则该案例将失败。
如果您在所有元素上使用 Wait Until ...
,则通过的机会会更高 - 如果任何元素的添加和可视化速度比其余元素慢,kw 将等待它。显然,这种情况会导致运行时间变慢——因为要等待条件满足。
至于使用一个与另一个的可读性方面,我不会对此发表评论。这是实现和代码结构的问题;你总是可以让一些简单的东西看起来很可怕,或者以一种漂亮的方式呈现一个复杂的解决方案 :)。与 python 相同,允许您编写像诗歌一样的代码,或者丑陋的一团糟(某些 SO 答案也是如此:D);你真的犯了这一切:)