如何进行组合搜索以单击墨水Cypabara Rspec

如何进行组合搜索以单击墨水Cypabara Rspec,rspec,hyperlink,click,capybara,Rspec,Hyperlink,Click,Capybara,但问题是,当他们有2条记录时,它会显示。图标删除是不明确的,而且href对于删除和查看详细信息是相同的,所以对于href,它也会显示不明确的。 如何使用HTML进行组合搜索 describe 'Destroy Student Record' do it 'should allow to Delete My student', js: true do expect { find('.icon-delete',"a[href ='/room

但问题是,当他们有2条记录时,它会显示。图标删除是不明确的,而且href对于删除和查看详细信息是相同的,所以对于href,它也会显示不明确的。 如何使用HTML进行组合搜索

describe 'Destroy Student Record' do
        it 'should allow to Delete My student', js: true do
          expect {
            find('.icon-delete',"a[href ='/room/grade3/#{@student.id}']").click
            page.find('.btn.delete', text: 'Sure').click
          }.to change(Student, :count).by(-1)
        end
      end
如果需要特别单击元素,可以执行以下任一操作:

click_link('Delete', href: "/room/grade3/#{@student.id}")
注意:即使有了这些修复,您的测试也可能会失败。这是因为您使用的是
change
matcher,而您的块在change matcher再次检查学生人数之前没有做任何事情来确保操作已完成。这是因为当使用任何支持JS的驱动程序时,只要点击按钮,它就不知道有什么副作用需要等待,并在应用程序关闭并开始处理点击触发的任何行为时返回测试。要解决这个问题,您的测试需要

find_link('Delete', href: "/room/grade3/#{@student.id}").find('.icon-delete').click
find("a[href ='/room/grade3/#{@student.id}'] i.icon-delete").click
这样,代码将延迟,直到学生实际被删除,并且
change
匹配器可以再次获取学生计数

使用HTML

describe 'Destroy Student Record' do
        it 'should allow to Delete My student', js: true do
          expect {
            find('.icon-delete',"a[href ='/room/grade3/#{@student.id}']").click
            page.find('.btn.delete', text: 'Sure').click
          }.to change(Student, :count).by(-1)
        end
      end
如果需要特别单击元素,可以执行以下任一操作:

click_link('Delete', href: "/room/grade3/#{@student.id}")
注意:即使有了这些修复,您的测试也可能会失败。这是因为您使用的是
change
matcher,而您的块在change matcher再次检查学生人数之前没有做任何事情来确保操作已完成。这是因为当使用任何支持JS的驱动程序时,只要点击按钮,它就不知道有什么副作用需要等待,并在应用程序关闭并开始处理点击触发的任何行为时返回测试。要解决这个问题,您的测试需要

find_link('Delete', href: "/room/grade3/#{@student.id}").find('.icon-delete').click
find("a[href ='/room/grade3/#{@student.id}'] i.icon-delete").click

这样,代码将延迟,直到学生实际被删除,并且
change
匹配器可以再次获取学生计数

查找不带2个字符串-显示您尝试单击的实际HTML查找不带2个字符串-显示您尝试单击的实际HTML