如何在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呢?
1 个回答
30
文档建议在设置 cookies 之前,先访问一个虚假的网址(比如一个 404 页面,或者一个图片的路径)。然后再设置 cookies,最后再访问你的主页面。
... 你需要在 cookie 有效的域名下。如果你想在与网站互动之前预设 cookies ... 另一种方法是找到网站上的一个小页面 ... (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)