Как установить cookie для определенного домена в selenium webdriver с помощью python?

Приветствуем пользователей StackOverflow. То, что я пытаюсь достичь, не позволяет раздражать вспомогательные ящики, когда мои тесты открывают главную страницу. Пока это метод, который я использую для открытия главной страницы:

def open_url(self, url):
    """Open a URL using the driver 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

В документации предлагается установить фиктивный URL-адрес (например, страницу 404 или путь к изображению) перед настройкой файлов cookie. Затем установите файлы cookie, затем перейдите на главную страницу.

Документация селена - файлы cookie

... вам нужно быть в домене, в котором будет действовать cookie. если ты пытаются предварительно установить файлы cookie, прежде чем вы начнете взаимодействовать с сайтом... альтернатива найти меньшую страницу на сайте... (http://example.com/some404page)

Итак, ваш код может выглядеть так:

def open_url(self, url):
    """Open a URL using the driver 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)