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

2024-05-20 00:38:38 发布

您现在位置:Python中文网/ 问答频道 /正文

各位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?


Tags: thestorenameselfaddurlbasevalue
1条回答
网友
1楼 · 发布于 2024-05-20 00:38:38

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

Selenium Documentation - Cookies

... you need to be on the domain that the cookie will be valid for. If you are trying to preset cookies before you start interacting with a site ... an alternative is to find a smaller page on the site ... (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)

相关问题 更多 >