当我转到一个页面时,我希望验证某些元素是否存在。我在使用 should have_css 在页面上查找元素时遇到问题。
所以我的代码如下所示: should have_css('name')
但是,这没有找到元素。奇怪的是,我可以使用 fill_in 与字段名称进行交互。例如下面的: fill_in('name', :with => 'testname') 结果字段被填充!!有没有人见过这样的事情?
谢谢!
问题
中使用的 css 选择器
should have_css('name')
是不正确的。这表示要查找类型为“名称”的元素(即标签)。
相反,当你这样做时
fill_in('name', :with => 'testname')
Capybara 查找名称、id 或标签文本为“名称”(即 、 等)的文本字段或文本区域。
正如您所看到的,使用“名称”作为定位器对于这两种方法是不一样的。
解决方案
如果你想要一个 id 为“name”的东西,你想做:
should have_css('#name')
如果你想要一个名为“name”的东西,你想做:
should have_css('[name=name]')