单击页面上使用水豚和站点棱镜获得相同类的按钮



有 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。

最新更新