对于 Capybara,我已经切换到 window,如何切换到新的 window?

With Capybara, how do I switch to the new window when i have already switched to the window?

我需要在我的助手中调用另一个助手(在新 window 中打开)然后打开并切换到另一个 window,但是当我尝试这样做时 - 我'我收到此错误:

Capybara::ScopeError:
   `switch_to_window` is not supposed to be invoked from `within`'s, `within_frame`'s' or `within_window`'s' block.

有没有办法打开并切换到另一个window?

[编辑1]

def create_ticket(kind, products = [])
  visit('inventory/parcels/')
  products.each do |product|
    if product[:serialized]
      serialized = find_device(product[:status], product[:id])

所以这是 find_device 助手:

def find_device(status_id, product_id)
  within_window open_new_window do
  visit('inventory/items?per=25)

(目前)无法从 within_window 内部切换到另一个 window(不放弃驱动程序特定方法)。您可以切换到只在任何地方使用 switch_to_window 而不是 within_window,但是您必须非常小心地手动管理作用域堆栈,然后切换回原始 windows。更好的方法可能是重组您的测试,这样您就不需要同时在多个 windows 之间跳跃。

话虽这么说,现在的 Capybara 实际上不需要限制,并且可能会在下一个版本中放宽 - https://github.com/teamcapybara/capybara/pull/1882