selenium-webdriver - 从输入框中检索值并且该值是数字时,RSpec 期望的行为很奇怪
问题描述
我有一个辅助方法,可以在输入框中设置一个值,然后验证文本。但是,如果该值为数字,则此操作失败。它看起来像:
def fill_in_value(label, text_input)
textarea = find(locator of the input box, using the label passed into this method)
textarea.set(text_input)
textarea.value.should == text_input
end
但是,如果text_input
是一个数字,则 rspec 期望失败expected: 1 got: "1" (using ==)
我可以通过执行以下操作来解决此问题:
text_input = text_input.to_s if text_input.is_a? Numeric
但这似乎真的很笨拙。有没有办法让我正确评估插入输入框中的文本?
解决方案
任何 HTML 字段的值都将是字符串(即使它是“数字”字段)。您不需要做一个条件 on text_input
,只需始终这样做,text_input = text_input.to_s
因为正如您的参数名称所暗示的那样 - 它应该是文本。此外,您永远不应该这样做textarea.value.should == ...
是片状测试的主要方法。相反,您应该使用 Capybara 提供的匹配器
textarea.should match_selector(:field, with: text_input.to_s)
或者如果使用较新expect
的 RSpec 语法
expect(textarea).to match_selector(:field, with: text_input.to_s)
推荐阅读
- python - 使用 JupyterLab SQL Magic 连接到 DB2z 时抛出编程错误:“CURRENT”无效
- wordpress - 如何运行循环以从 wordpress 中的多个复选框中获取数据?
- php - 我们可以在同一个控制器中多次使用数据库 cache_set_path 吗?
- jquery - 触摸设备上光滑的轮播中同时出现 2 个点
- javascript - ReferenceError:未定义 CryptoJs
- javascript - 我如何验证在克隆 jquery 控件中使用 java 脚本有不同的 id
- css - 仅 CSS 的 ProgressBar,带有突出显示当前状态的渐变颜色
- java - 正则表达式替换特定符号后的所有内容?爪哇
- angular - 如何基于 [sortablejs] 使按钮启用/禁用
- excel - 如何使用单元格引用连接多个结果