我正在尝试更新代码,因为当前正在运行时收到以下弃用警告:
“不建议使用警告:不建议将字符串参数传递给#within_window。传递窗口对象或lambda。”
这是代码:
new_window=page.driver.browser.window_handles.last
page.within_window new_window do
expect(current_url).to eq("url")
end
page.driver.browser.switch_to.window(page.driver.browser.window_handles.last)
我应该如何编辑以上内容,以便不再收到弃用警告?谢谢!
最佳答案
within_window
方法已更改为可以使用Capybara::Window或proc/lamda。不建议使用window_handles.last
返回的字符串来查找窗口。
要获取最后的Capybara::Window,请使用 windows
method。它的工作类似于window_handles
所做的工作:
new_window = windows.last
page.within_window new_window do
expect(current_url).to eq("url")
end
请注意,文档指出“未定义返回数组中窗口的顺序。驱动程序可以按窗口的创建时间对其进行排序,但这不是必需的。”我认为使用
window_handles
时也是如此,因此可以安全地假设最后一个窗口是新窗口。但是,在可能的情况下,最好通过一些特定的东西(例如标题)来定位窗口:
within_window(->{ page.title == 'New window title' }) do
expect(current_url).to eq("url")
end
关于capybara - 不建议将字符串参数传递给#within_window,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25436923/