8

在 RSpec 中,我可以使用这样的代码开关来弹出窗口、链接,我如何在 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
4

3 回答 3

25

您可以在 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
于 2016-03-01T23:13:25.527 回答
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 更改以来,安德鲁斯的回答现在是正确的答案。

于 2013-09-26T14:08:16.647 回答
-2

以一种简单的方式,我们可以做到这一点,无需 inside_window 和 selenium natives。

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 { 标题 == 'Google' }

于 2017-11-01T13:05:58.917 回答