2013-09-29 3 views
1

Я не могу понять, как установить куки с квадратными скобками [] с помощью python для Selenium. Это то, что я пытаюсь:Python selenium rc create_cookie

selenium.create_cookie("test[country]=nl", "path=/, max_age=6000") 

Результаты в:

Traceback (most recent call last): 
    File "test.py", line 55, in test 
    sel.create_cookie('test[country]=nl', "path=/, max_age=6000") 
    File "C:\Python27\lib\site-packages\selenium\selenium.py", line 1813, in create_cookie 
    self.do_command("createCookie", [nameValuePair,optionsString,]) 
    File "C:\Python27\lib\site-packages\selenium\selenium.py", line 225, in do_command 
    raise Exception(data) 
Exception: ERROR: Invalid parameter. 

Как я могу это исправить?

EDIT: Это код. Он основан на коде, экспортированном IDE.

from selenium.selenium import selenium 
import unittest, time, re 
from selenium import webdriver 

class country(unittest.TestCase): 
    def setUp(self): 
     self.verificationErrors = [] 
     self.selenium = selenium("localhost", 4444, "*chrome", "http://example.com/") 
     self.selenium.start() 

    def test_country_cookie_redirect(self): 
     sel = self.selenium 
     sel.create_cookie('test[country]=nl', "path=/, max_age=6000") 
     sel.open("http://example.com") 
     self.assertEqual("http://example.com/nl/nld", sel.get_location()) 

    def tearDown(self): 
     self.selenium.stop() 
     self.assertEqual([], self.verificationErrors) 

if __name__ == "__main__": 
    unittest.main() 

ответ

0

Использование add_cookie(). Например:

from selenium import webdriver 

browser = webdriver.Firefox() 
browser.get("http://stackoverflow.com") 

browser.add_cookie({"name": "test[country]", 
        "value": "nl", 
        "path": "/", 
        "max_age": 6000}) 

browser.close() 

UPD (модифицированный тест, используя WebDriver):

import unittest 
from selenium import webdriver 


class country(unittest.TestCase): 
    def setUp(self): 
     self.verificationErrors = [] 
     self.driver = webdriver.Remote("http://127.0.0.1:4444/wd/hub", {'browserName': 'chrome'}) 

    def test_country_cookie_redirect(self): 
     self.driver.add_cookie({"name": "test[country]", 
           "value": "nl", 
           "path": "/", 
           "max_age": 6000}) 
     self.driver.get("http://example.com") 
     self.assertEqual("http://example.com", self.driver.current_url) 

    def tearDown(self): 
     self.driver.quit() 
     self.assertEqual([], self.verificationErrors) 


if __name__ == "__main__": 
    unittest.main() 
+0

WebDriver это нечто иное, чем селен сервера (RC) правильно? Мне нужно, чтобы он работал с RC. – user2511309

+0

@ пользователь2511309 хорошо, обязательно. Исправьте меня, если я ошибаюсь: у вас есть сервер селена, и вы используете selenium [удаленный webdriver] (http://selenium-python.readthedocs.org/en/latest/getting-started.html#using-selenium-with -Дистанционный-WebDriver)? – alecxe

+0

Я новичок в Selenium, поэтому я думаю, что я смешиваю вещи. Я создал несколько скриптов с IDE и экспортировал их в Python. Все они начинаются как self.selenium = selenium («localhost», 4444, «chrome», «http://example.com/»). self.selenium.open («http://exmapele.com») и т. д. Что отличает от webdriver.get? Чтобы использовать add_cookie(), как вы предложили, я должен переписать оставшуюся часть моего экспортированного кода «webdriver» правильно? – user2511309