在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
答案 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; }