我有以下我试图测试的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
不是一个有效的选项。
任何帮助将不胜感激
答案 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
空白时
感谢您的回复。