有20种不同的按钮需要点击,以期望并验证代码中的网址。我已经尝试了不同的方法来实现我的测试,但它们都失败了。
我尝试过类似的事情:
page.all(:class => 'action red').each do |button|
c = button.find(:class => 'action view red')
c.click
page.driver.browser.switch_to.window(@new_window)
expect('some element on those 20 different browsers sessions before closing them')
page.driver.browser.close
end
end
我收到此错误:
ArgumentError:无效键:class,应该是:count,:minimum, :maximum,:between,:text,:visible,:exact,:match,:wait
任何可以帮助我在代码中如何执行获取所有20个按钮的元素,存储它们并单击它们以在关闭它之前期望每个按钮
答案 0 :(得分:0)
你的&#34;按钮&#34;不是按钮 - 因为它们是<a>
元素,它们实际上是链接,样式看起来像按钮。
假设点击这些链接中的每一个实际上都会打开一个新窗口(因为您尝试切换到新窗口),那么代码就像
page.all(:link, class: ['action', 'red']).each do |link|
win = page.window_opened_by { link.click }
page.within_window(win) do
expect(page).to ... # whatever you need to expect
end
win.close()
end
请注意,这并不使用任何特定于驱动程序的(.driver.browser ...)方法 - 您应尽可能远离它们,因为它们通常是您做错事的标志。此外,:class
选项并非普遍适用于所有Capybaras内置选择器类型,直到v2.10,因此您需要使用较新版本的Capybara。