2012-07-24 93 views
1

當我在firefox(V-12)上獲得以下鏈接時,我的Ubuntu機器上的瀏覽器允許我正常登錄。Watir-webdriver不存儲所有cookies

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

不過,如果我使用的Watir-webdriver的,我得到的消息: 「Cookies必須以登錄啓用。」

這裏是爲了重現這一問題的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" 

你會發現,瀏覽器顯示「電子郵件地址或成員名稱」欄下面的「Cookies必須啓用」的錯誤消息。當我查看存儲的cookie時,我注意到並非所有以正常模式存儲的cookie都可用。我通過在存儲的cookie中搜索「go.com」進行了比較。

任何想法會導致使用相同的瀏覽器存儲在兩種模式之間的cookie差異?

謝謝!

+0

我發現這是更多的網站問題。通過點擊「登錄」並在彈出框中登錄,我能夠解決此問題。它看起來像網站寫了一些cookie,當它來自登錄URL的主要URL時,直接跳轉到登錄URL就跳過了。 – 2012-07-30 02:54:36

回答

3

watir-webdriver沒有問題或不符。這裏發生的是網站編碼的結果。

您正在訪問的頁面(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,擴展程序,偏好或瀏覽記錄。由於乾淨的配置文件從未訪問http://espn.go.com以接收測試Cookie,因此顯示警告。

有兩種方法來避免此警告:

  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" 
    

希望有所幫助!