水豚断言只读字段
Capybara assert read only field
我正在尝试测试以下 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
不是一个有效的选项。
任何帮助将不胜感激
你可以试试这样的
expect(page).to have_selector("input[name='name'][readonly='']")
编辑
你是对的。更新了我的答案。
在进行更深入的搜索后,我发现了一个布尔选项。你可以问一下是不是只读的
如果是,结果为真,当只读属性不存在时(表示要与之交互的可见字段,它将return nil)。
我现在已经写了以下断言。
expect(find(:field, type: 'text', name: 'name').readonly?).to be true
或
expect(find(:field, type: 'text', name: 'name').readonly?).to be nil
空白时
感谢您的回复。
您可以传递给 find
的任何选择器类型(:field 等)也可以传递给 have_selector
。由于 :field
选择器类型将 name/id/associated 标签文本作为其第一个参数,因此检查页面是否具有以 'name' 作为 ID、名称或标签的只读字段的最简洁方法文本是
expect(page).to have_selector(:field, 'name', readonly: true)
可以更简洁地写成
expect(page).to have_field('name', readonly: true)
我正在尝试测试以下 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
不是一个有效的选项。
任何帮助将不胜感激
你可以试试这样的
expect(page).to have_selector("input[name='name'][readonly='']")
编辑
你是对的。更新了我的答案。
在进行更深入的搜索后,我发现了一个布尔选项。你可以问一下是不是只读的
如果是,结果为真,当只读属性不存在时(表示要与之交互的可见字段,它将return nil)。
我现在已经写了以下断言。
expect(find(:field, type: 'text', name: 'name').readonly?).to be true
或
expect(find(:field, type: 'text', name: 'name').readonly?).to be nil
空白时
感谢您的回复。
您可以传递给 find
的任何选择器类型(:field 等)也可以传递给 have_selector
。由于 :field
选择器类型将 name/id/associated 标签文本作为其第一个参数,因此检查页面是否具有以 'name' 作为 ID、名称或标签的只读字段的最简洁方法文本是
expect(page).to have_selector(:field, 'name', readonly: true)
可以更简洁地写成
expect(page).to have_field('name', readonly: true)