ruby - Capybara 等到按钮启用?
问题描述
很惊讶我实际上没有遇到过这个问题,但是我有一个简单的按钮,在选择下拉菜单之前它会被禁用。有时页面速度不够快,无法在选择上一个下拉菜单后“启用”按钮被点击,导致它失败。
我可以投入一两秒钟的“睡眠”并解决这个问题,但这似乎是一种懒惰/糟糕的方法。
capybara(或纯硒)有没有办法让它等到按钮实际启用?我想抛出这是此按钮的页面模型方法(因为我试图在实际测试规范中避免 API 特定方法/硒/等...(尽管如果需要,我可以)。
FWIW 这是专门针对 Ruby 的 capybara 框架的,但纯硒也可以。
解决方案
假设您所指的按钮实际上是一个按钮(<button> 元素,或 <input> 类型为 submit、reset、image 或 button 的元素),那么 Capybaras :button 选择器将(默认情况下)等待它为非-禁用。
click_button('Something')
或者
find_button('button_id').click
或者
find(:button, 'button_value').click
如果任何 finder 或 action 方法没有为特定元素等待足够长的时间,您始终可以通过传递 :wait 选项来增加特定 finder/action 的最大等待时间
find(:button, 'Something', wait: 10).click
如果您不使用选择器类型(如果不使用,为什么不使用),而只是使用原始 CSS 来定位元素,那么您可以使用:enabled
伪类以及现有的 CSS 和类似的东西
find('#my_button:enabled', wait: 10).click
如果您调用按钮的元素实际上不是一个按钮,而是一些其他类型的元素(<a> 等),其样式看起来像一个按钮,那么您需要准确解释您如何禁用“按钮”。
推荐阅读
- java - JPA 和 JTA 同步
- sql-server - Sql 在空闲时间后重置我的池连接
- javascript - 如何将数组从控制器传递到 _layout.cshtml
- android - 如何在 TextInputLayout 内的 EditText 上设置高程
- android - 如何通过具有不可序列化数据的意图传递数组或数组列表?
- vba - VBA。访问 Variant 的数组元素。数组是类属性
- python - 使用 Python Tkinter 2.7 在选定路径中创建目录
- html5-fullscreen - 在任何元素上初始化全屏时没有任何效果
- ios - 如何在 CBPeripheralManager 处于活动状态时提高 CBCentralManager 的性能
- c# - 使用我制作的字符自动生成的 id