Cucumber 使用have\u css验证页面上的元素时出现问题

Cucumber 使用have\u css验证页面上的元素时出现问题,cucumber,capybara,Cucumber,Capybara,当我转到某个页面时,我希望验证是否存在某些元素。我在使用“应该有”css在页面上查找元素时遇到问题 因此,我的代码如下所示: 应具有\u css('名称') 但是,这找不到元素。奇怪的是,我能够使用fill_-in与字段名交互。例如: 填写('name',:with=>'testname') 字段中的结果已填充!!有人见过这样的东西吗 谢谢 问题 中使用的css选择器 should have_css('name') 这是不正确的。这表示查找类型为“name”(即标记)的元素 相反,当你这样做的

当我转到某个页面时,我希望验证是否存在某些元素。我在使用“应该有”css在页面上查找元素时遇到问题

因此,我的代码如下所示: 应具有\u css('名称')

但是,这找不到元素。奇怪的是,我能够使用fill_-in与字段名交互。例如: 填写('name',:with=>'testname') 字段中的结果已填充!!有人见过这样的东西吗


谢谢

问题

中使用的css选择器

should have_css('name')
这是不正确的。这表示查找类型为“name”(即标记)的元素

相反,当你这样做的时候

fill_in('name', :with => 'testname')
Capybara查找名称、id或标签文本为“name”(即,等等)的文本字段或文本区域

正如您所看到的,使用“name”作为定位器对于这两种方法是不同的

解决方案

如果您想获取id为“name”的内容,您需要执行以下操作:

should have_css('#name')    
should have_css('[name=name]')  
如果你想要一个名字为“name”的东西,你要做:

should have_css('#name')    
should have_css('[name=name]')  

太好了,谢谢你,贾斯汀。您列出的第二个解决方案正是我想要的。也谢谢你的详细解释。