1

firefox (V-12) で次のリンクにアクセスすると、Ubuntu マシンのブラウザーで正常にログインできます。

https://r.espn.go.com/members/v3_1/login?language=en&forwardUrl=&appRedirect=http%3A%2F%2Fgames.espn.go.com

ただし、watir-webdriver を使用すると、「ログインするには Cookie を有効にする必要があります」というメッセージが表示されます。

Watir でこの問題を再現するコードは次のとおりです。

require 'watir-webdriver'
browser = Watir::browser.new
browser.goto "https://r.espn.go.com/members/v3_1/login?language=en&forwardUrl=&appRedirect=http%3A%2F%2Fgames.espn.go.com"

ブラウザの「メール アドレスまたはメンバー名」フィールドの下に「Cookie を有効にする必要があります」というエラー メッセージが表示されます。保存された Cookie を確認したところ、通常モードで保存されたすべての Cookie が利用できるわけではないことに気付きました。保存された Cookie で「go.com」を検索して比較しました。

同じブラウザを使用して、2 つのモード間で保存された Cookie に不一致が生じる原因は何ですか?

ありがとう!

4

1 に答える 1

3

に問題や矛盾はありませんwatir-webdriver。ここで起こっていることは、Web サイトのコーディング方法の結果です。

アクセスしているページ ( https://r.espn.go.com/members/v3_1/login?language=en&forwardUrl=&appRedirect=http%3A%2F%2Fgames.espn.go.com ) は、オーバーレイを意図しています。http://espn.go.comで。サイトをコーディングした人は誰でも、メイン ページへのヒット後にオーバーレイ ページが常にアクセスされると想定していました。したがって、メイン ページ ( http://espn.go.com ) は、ユーザー エージェントで Cookie が有効になっているかどうかをテストするために Cookie を設定します。サインイン フォームを含むオーバーレイ ページは、テスト Cookie が存在するかどうかを確認し、存在しない場合は、表示されている警告を表示します。

理解しておくべき重要なことは、watir-webdriver新しいブラウザー インスタンスごとにデフォルトでクリーンなプロファイルが設定されるということです。これは、ブラウザーが Cookie、拡張機能、設定、または閲覧履歴を一切保持していないことを意味します。クリーン プロファイルはテスト Cookie を受信するためにhttp://espn.go.comにアクセスしたことがないため、警告が表示されています。

この警告を回避するには、次の 2 つの方法があります。

  1. 次のように、サインイン ページの前にメイン ページにアクセスできます。

    require 'watir-webdriver'
    browser = Watir::Browser.new
    browser.goto "espn.go.com"
    browser.goto "https://r.espn.go.com/members/v3_1/login?language=en&forwardUrl=&appRedirect=http%3A%2F%2Fgames.espn.go.com"
    
  2. または、デフォルトの Firefox プロファイルを使用することもできます。これには (おそらく) 既にテスト Cookie が含まれています。

    require 'watir-webdriver'
    browser = Watir::Browser.new :firefox, :profile => "default"
    browser.goto "https://r.espn.go.com/members/v3_1/login?language=en&forwardUrl=&appRedirect=http%3A%2F%2Fgames.espn.go.com"
    

それが役立つことを願っています!

于 2012-08-01T05:21:58.117 に答える