【发布时间】:2019-05-09 16:21:13
【问题描述】:
上下文:在我的 rspec 中(使用 Ruby 和 Capybara)
- 我单击一个链接来测试我的应用中的一个操作:向我的应用添加一个分支。
- 会打开一个模式窗口,我在其中选择分支,然后单击“提交”按钮将分支添加到我的应用程序中。单击“提交”后,模式窗口关闭。
- 通过单击主屏幕中的“保存”继续 rspecs,以保存应用程序的状态(并有效地保存添加分支)。
问题:rspec 失败,因为(似乎)它试图单击主屏幕上的“保存”按钮,而用于选择分支的模式窗口仍然存在。测试并没有抱怨找不到“保存”按钮组件,而是无法点击。
日志中的错误是:
[...]Save</button> is not clickable at point (692, 23). Other element would receive the click[...]
A gotcha:此 rspec 在某些环境中正确传递,例如在我的本地服务器上运行时,但在我们的自动化服务器执行时失败。因此,该测试已被标记为“不稳定”。
可能的解决方案:到目前为止我们已经尝试过的方法:
玩转我们的“点击配置”,确保我们处于“就绪状态”并且模式窗口已消失。我们失败了,因为我们一直遇到同样的错误。
-
实现“等待”。当模态窗口似乎存在时,我们添加了一个循环休眠
XYZ.add_new_branch_name(@branch_name) while Utilities.element_visible?(:xpath, myElement) sleep(0.5) end XYZ.save
while 条件检查模态窗口的“提交”按钮是否存在。 element_visible 函数使用
find(method,element).visible?
但是我不确定find是否应该已经考虑到按钮可能存在并且可见但不可点击。
由于这仍然失败,尽管我们在尝试单击“保存”按钮之前尽了所有努力确保模式消失,我想问一下:
是否有适当的方法来检测模式窗口后面的元素是否可点击或不使用 rspecs?
【问题讨论】: