Switch to popup windows in cucumber, capybara Switch to popup windows in cucumber, capybara ruby ruby

Switch to popup windows in cucumber, capybara


You can use Capybara in your Cucumber steps to interact with popup windows:

login_window = window_opened_by do  click_button 'Open Login Window'endwithin_window(login_window) do  fill_in :email, with: "email@example.com"  fill_in :password, with: "password"  click_button 'Log In'end


I don't think there is a cucumber/capybara way to do this as such.

But you can still change the window using selenium driver commands like this:

    #Get the main window handle    main = page.driver.browser.window_handles.first    #Get the popup window handle    popup = page.driver.browser.window_handles.last    #Then switch control between the windows    page.driver.browser.switch_to.window(popup)

EDIT:Andrews answer below is the correct answer now since new DSL changes were implemented.


In a simple way we can do so, without within_window and without selenium natives.

page.switch_to_window page.windows.firstpage.switch_to_window page.windows.last 

or

page.switch_to_window page.windows[0]page.switch_to_window page.windows[-1]

0 - is the first window
-1 - is the last window

windows function return an array of all windows.

Another way, using the title of page.

page.switch_to_window { title == 'Google' }