Capybara断言只读字段

时间:2018-02-02 09:21:55

标签: ruby cucumber capybara

我有以下我试图测试的html片段:

<input type="text" value="Pool A" name="name" class="form-control form-control-1-2" required="" readonly="" style="background-color: rgb(222, 224, 226);">

我可以看到该元素设置为只读。我有首选的残疾人,但我们去了!!

有没有办法可以使用Capybara将输入字段断言为只读?

我在某些文档中遇到readonly: true,所以我尝试了:

expect(page).to have_css('name', readonly: true)

但它没有说readonly不是一个有效的选项。

任何帮助将不胜感激

3 个答案:

答案 0 :(得分:1)

您可以传递给find的任何选择器类型(:字段等)也可以传递给have_selector。由于:field选择器类型将名称/ id /关联标签文本作为其第一个参数,因此检查页面是否具有带有&#39; name&#39;的只读字段的最简洁方法作为id,name或label文本是

expect(page).to have_selector(:field, 'name', readonly: true)

可以更简洁地写成

expect(page).to have_field('name', readonly: true)

答案 1 :(得分:-1)

你可以试试这样的事情

expect(page).to have_selector("input[name='name'][readonly='']")

修改

你是对的。更新了我的答案。

答案 2 :(得分:-1)

在进行更深入的搜索后,我找到了一个布尔选项。你可以问它是否只读。

如果是,则结果为true,当只读属性不存在时(表示要与之交互的可见字段,它将返回nil)。

我现在写了以下断言。

expect(find(:field, type: 'text', name: 'name').readonly?).to be true

expect(find(:field, type: 'text', name: 'name').readonly?).to be nil

空白时

感谢您的回复。