水豚检查 HTML class 和 ID

Capybara checking HTML class and ID

我目前正在尝试找到这个元素并让水豚验证它是否存在。出现了一个元素,我正在使用 page.should have_css 来查看该元素是否存在。

<i class="ui-grid-icon-cancel" ui-grid-one-bind-aria-label="aria.removeFilter" aria-label="Remove Filter">&nbsp;</i>

我目前正在尝试访问 ui-grid-icon-cancel 并验证它是否存在。这是我用来验证它的代码。

page.should have_css('class#ui-grid-icon-cancel')

我还能做些什么来解决这个问题。

我希望使用水豚验证 CSS 元素。

你试过了吗page.should have_css('.ui-grid-icon-cancel')。查找 class 元素时,您需要使用句点表示法,而不是显式地输入单词“class”。 `

您可以使用以下任一项 :

  • css_selector 使用 class 属性的值:

    page.should have_css('i.ui-grid-icon-cancel')
                           ^ here dot denotes classname
    
  • css_selector 使用 aria-label 属性的值:

    page.should have_css('i[aria-label="Remove Filter"]')
    

关于所需的 CSS 选择器的所有其他答案都是正确的,但是如果您收到关于 should 未定义的错误,那么您可能没有正确安装 RSpec 或者您的项目禁用了 should 语法 - https://relishapp.com/rspec/rspec-expectations/docs/syntax-configurationshould 语法将在 RSpec 4 中默认禁用,此时任何新代码都不应该使用它。相反,您应该使用 expect 语法。假设您已正确安装 RSpec,以下任何一项都应该有效,具体取决于您要验证的内容

expect(page).to have_css('.ui-grid-icon-cancel')
expect(page).to have_css('i.ui-grid-icon-cancel')
expect(page).to have_css('i', class: 'ui-grid-icon-cancel')