2011-08-22 118 views
2

我們將selenium 2.4與python客戶端配合使用,並在Firefox上運行腳本。
在做,我們所得到的例外delete_all_visible_cookies:Selenium:刪除cookies的問題

ERROR: Command execution failure. Please search the user group at https://groups.google.com/forum/#!forum/selenium-users for error details from the log window. The error message is: malformed URI sequence

我們意識到,當我們從第三方(所以我們不能改變它)引起該問題一個cookie它發生。我們asked about it here in the past和這個問題有open bug of Selenium,但它尚未修復。

爲了克服這個問題,我們在刪除有問題的cookie之前,先用delete_cookie分別刪除有問題的cookie,然後再做delete_all_visible_cookies。但是,在Selenium 2中,我們也得到了delete_cookie的這個錯誤。

我們認爲這可能是因爲cookie的值(類似於:WSS_GW = V1z%X%X ^^^ @ C @),所以我們試圖覆蓋它並在刪除cookie之前將其設置爲0。然後,我們得到了錯誤:

ERROR: Couldn't delete cookie WSS_GW.

我在網上尋找此錯誤信息中發現的唯一的解釋是: deleteAllVisibleCookies fails if a cookie name contains % character 但我們必須包含其他餅乾_在他們的名字和一切工作正常。

任何想法可能是什麼問題或我們如何克服它?

回答

3

OK,我們發現了2個問題,我們在這裏:

  1. cookie的值是有問題的,所以我們得到了 '畸形URI序列' 的錯誤。爲了解決這個問題,我在刪除cookie之前使用create_cookie()將cookie值設置爲0。

  2. 有兩個cookie具有相同的名稱和值,但具有不同的域:一個使用「domain.com」,一個使用「a.domain.com」(並且腳本已打開http://b.domain.com)。我猜想Selenium看到了兩個cookie,刪除之後仍然看到一個同名的cookie,所以我們得到了'Could not delete cookie'錯誤。爲了解決這個問題,(在我更改了所有這些cookie的值之後),我使用delete_cookie()而不是遞歸參數刪除了域「domain.com」的cookie,因此當我調用delete_all_visible_cookies()時,它只是一個cookie與這個名字。

總之,我所做的是:

for domain in ['.domain.com','a.domain.com','b.domain.com']: 
     sel.create_cookie("%s=0"%problematic_cookie,"path=/, domain=%s"%domain) 
sel.delete_cookie(problematic_cookie,"path=/, domain=.domain.com") # without recurse 
sel.delete_all_visible_cookies() 
+0

從哪裏導入此功能模塊?我總是得到問題 '硒進口delete_all_visible_cookies' 或 '進口硒作爲sel' 'sel.delete_all_visible_cookies' 如何從哪裏進口的呢? 即時通訊使用Python的最新版本的硒2.7 – ElTero

+0

我沒有代碼在這裏,但據我所知,sel是硒類的對象(此代碼片段不使用硒2)。 – Avital

+0

至少在Selenium 2中,cookie API是webdriver的一部分。因此,每個驅動程序的API可能會有所不同。例如PhantomJS驅動程序沒有'delete_all_visible_cookies'。 – Petri