我正在使用 capybara-webkit 来测试使用 jquery-tokeninput (https://github.com/loopj/jquery-tokeninput) 填充字段的表单。问题是使用 fill_in 不适用于此。反正有没有自动测试这个?提前致谢。
3 回答
我也一直在使用令牌输入,它的作用是隐藏您的实际输入字段,并将其替换为另一个具有 id 匹配的元素token-input-{your_field_id}
。因此,假设您有一个带有 id 的字段search
,您实际上应该定位带有 id 的元素token-input-search
。
所以一个示例代码片段是:
fill_in "token-input-search", with: "hello"
然后你可以测试你的行为。
从 capybara-webkit 代码中的发行说明中,他们从 1.0.0 版本中获得了以下条目:
* Set text fields using native key events.
因此,看起来在文本字段上设置文本会导致本机事件触发。
像你一样,我也需要这个来工作,并发现这可以解决问题:
find('input#query').set 'some text'
我的 javascript 拾取了keyup
它正在侦听的事件并以它应该的方式触发。
https://github.com/markgandolfo/send-keys
将“a”字符发送到 id 为 search 的输入 (#search)
我发送一个到“input#search”
将“a”、“b”和“c”字符发送到 id 是搜索的输入 (#search)
我将 abc 发送到“input#search”
如果您感觉更舒服,可以将它们放在引号中
我将“abc”发送到“input#search”
您还可以向元素发送修饰符/特殊击键
我将 arrow_left 发送到“input#search”
您甚至可以发送修饰符和字符的组合
这将导致将字符“A”发送到输入
我将 [shift, a] 发送到“input#search”
或者你只是想按回车
我将输入发送到“input#search”
在文本区域中测试计数器会有多酷(比如 Twitter 应用程序)
我向“#message”发送你好我应该在“characters_left”中看到“135”我向“#message”发送退格键我应该在“characters_left”中看到“136”
我们用它来测试完成建议
第一个建议的名称被突出显示并响应输入键
我将“bo”发送到“input#username”我应该在“username_suggestions”中看到“bob”然后我将输入发送到“input#username”