我有一个点击按钮的规范,它会触发一些JS生成网址并在新窗口中打开它:
new_window = window_opened_by { find('#search_postcode').click }
within_window new_window do
expect(page.current_url).to include('postcode.nl')
end
这不起作用。我收到以下错误:
Failure/Error: expect(page.current_url).to include('postcode.nl')
expected "about:blank" to include "postcode.nl"
但是,当我添加sleep 1
时,规范会通过:
within_window new_window do
sleep 1
expect(page.current_url).to include('postcode.nl')
end
是否可以在没有sleep
的情况下使其工作?
答案 0 :(得分:1)
您可以在新的Windows html中检查选择器。 Capybara然后应该等待default_waittime以显示元素。喜欢:
within_window new_window do
expect(page).to have_selector('.your_class_here')
expect(page.current_url).to include('postcode.nl')
end
答案 1 :(得分:0)
无需测试元素的存在,您可以使用提供的have_current_path
匹配器,其中包括等待/重试行为,并且通常应该(99.9%的时间)优先使用RSpec提供的文本匹配器和结果current_url
within_window new_window do
expect(page).to have_current_path(/postcode\.nl/, url: true)
end