切换到黄瓜,水豚的弹出窗口

时间:2013-09-24 13:57:17

标签: ruby capybara popupwindow

在RSpec中我可以使用这样的代码切换到弹出窗口link,我怎么能在Cucumber步骤中做这样的事情?

login_window = page.driver.find_window('PPA_identity_window')
    main_window = page.driver.find_window('')

    # We use this to execute the next instructions in the popup window
    page.within_window(login_window) do
      #Normally fill in the form and log in
      fill_in 'email', :with => "<your paypal sandbox username>"
      fill_in 'password', :with => "<your paypal sandbox password>"
      click_button 'Log In'
    end

3 个答案:

答案 0 :(得分:23)

您可以在Cucumber步骤中使用Capybara与弹出窗口进行交互:

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

答案 1 :(得分:15)

我不认为有这样做的黄瓜/水豚方式。

但你仍然可以使用selenium驱动程序命令更改窗口,如下所示:

    #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)

编辑: 自从实施新的DSL更改以来,安德鲁斯回答以下是正确的答案。

答案 2 :(得分:-1)

我们可以这样做,没有内部窗口,也没有selenium原生。

page.switch_to_window page.windows.first

page.switch_to_window page.windows.last 

page.switch_to_window page.windows[0]

page.switch_to_window page.windows[-1]

0 - 是第一个窗口
-1 - 是最后一个窗口

windows 函数返回所有窗口的数组。

另一种方式,使用页面标题。

page.switch_to_window {title ==&#39; Google&#39; }