4

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.

ブラウザーの状態を保存して閉じ、同じセッションで再度開くにはどうすればよいですか?

4

1 に答える 1