有 20 个不同的按钮可供期待,需要点击才能预期和验证代码中的 URL。我已经尝试了不同的方法来实施我的测试,但它们都失败了。
我正在尝试类似的东西:
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
我收到此错误:
参数错误:无效键:类,应该是:计数,:最小值, :maximum, :between, :text, :visible, :exact, :match, :wait
任何人都可以在代码中帮助我如何执行获取所有 20 个按钮的元素,存储它们并单击它们以在关闭之前期望每个按钮的 url
你的"按钮"不是按钮 - 因为它们是<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...)的方法 - 您应该尽可能远离它们,因为它们通常表明您做错了什么。 此外,直到 v2.10 之前,:class
选项并非在所有 Capybaras 内置选择器类型上普遍可用,因此您需要为此使用较新版本的 Capybara。