如何使用python在selenium webdriver中将cookie设置为特定域?

时间:2014-07-23 19:42:36

标签: python firefox selenium cookies

Hello StackOverflow用户我试图实现的是防止在我的测试打开主页时弹出恼人的帮助盒。到目前为止,这是我用来打开主页的方法:

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?

1 个答案:

答案 0 :(得分:15)

文档建议在设置Cookie之前导航到虚拟URL(例如404页面或图像路径)。然后,设置cookie,然后导航到主页面。

Selenium Documentation - Cookies

  

...您需要访问Cookie有效的域名。如果你   正在尝试在开始与网站交互之前预设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)