watir で対話型認証をテストしたい。Seleniumサーバーでブラウザを1回開く必要があり、ユーザーの操作なしでログイン/パスワードを入力する必要があります(サーバーに保存され、ユーザーはそれらを入力せず、確認コードを入力するだけです)、「確認コードを入力」ラベルが付いた新しいテキストフィールドが表示されます、次にシステムは確認コードをユーザーに送信し、ブラウザーを閉じます(ここでは、セッションを保存する必要があります)。ユーザーは確認コードを受け取り、それをサーバーに送信し、サーバーは新しいブラウザーを開き (何らかの形で保存されたセッションを復元します)、ユーザーから受け取った確認コードを入力します。
ブラウザーを開いたままにして、表示されたテキスト フィールドに確認コードを入力することもできますが、ユーザーが受信した確認コードを送信しない場合、ブラウザーは開いたままになり、良い解決策ではありません。
だから、私はこのようなことを試しました:
params = { login: 'userexample.com', password: '123456' }
adapter = Adapters::Test.new(params)
adapter.sign_in #opens browser, fills credentials fields, clicks 'get verification code', 'enter verification code' field appears
cookies = adapter.browser.cookies.to_a #save browser state
url = adapter.browser.url
adapter.browser.close
adapter = Adapters::Test.new(params)
adapter.browser.goto url
adapter.browser.cookies.clear
cookies.each do |saved_cookie|
adapter.browser.cookies.add(saved_cookie[:name], saved_cookie[:value])
end
adapter.browser.refresh #I should be on the same page with appeared 'enter verification code' field, but nothing happens after refresh, I am still on the main page with only login/password fields.
ブラウザーの状態を保存して閉じ、同じセッションで再度開くにはどうすればよいですか?