2014-07-23 56 views
10

你好同胞StackOverflow的用戶。我試圖實現的目的是防止當我的測試打開主頁時出現惱人的助手盒彈出。到目前爲止,這是我使用打開主頁的方法:如何使用python將selenium webdriver中的cookie設置爲特定的域?

def open_url(self, url): 
    """Open a URL using the driver's base URL""" 
    self.webdriver.add_cookie({'name' : 'tour.index', 'value' : 'complete', 'domain' : self.store['base'] + url}) 
    self.webdriver.add_cookie({'name' : 'tour.map', 'value' : 'complete', 'domain' : self.store['base'] + url}) 
    self.webdriver.get(self.store['base'] + url) 

不過,我在測試運行後什麼返回是這樣的:

2014-07-23 15:38:19.453057: X Message: u'You may only set cookies for the current domain' ; 

我怎麼能實際設置cookie我之前加載基礎測試域?

回答

11

該文檔建議在設置cookie之前導航到虛擬URL(例如404頁面或圖像路徑)。然後,設置cookie,然後導航到您的主頁面。

Selenium Documentation - Cookies

...你需要對cookie的有效期爲域。如果您 試圖啓動與網站交互 之前預設餅乾...另一種是 找到該網站上較小的頁面... (http://example.com/some404page

所以,你的代碼可能像這樣:

def open_url(self, url): 
    """Open a URL using the driver's base URL""" 

    dummy_url = '/404error' 
    # Or this 
    #dummy_url = '/path/to/an/image.jpg' 

    # Navigate to a dummy url on the same domain. 
    self.webdriver.get(self.store['base'] + dummy_url) 

    # Proceed as before 
    self.webdriver.add_cookie({'name' : 'tour.index', 'value' : 'complete', 'domain' : self.store['base'] + url}) 
    self.webdriver.add_cookie({'name' : 'tour.map', 'value' : 'complete', 'domain' : self.store['base'] + url}) 
    self.webdriver.get(self.store['base'] + url) 
+1

設置cookies來的圖像給我一個例外:org.openqa.selenium.UnableToSetCookieException:您可能只設置在HTML文檔餅乾 – xtian

相關問題