1

Selenium の Python で角括弧 [ ] を使用して 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.

どうすればこれを修正できますか?

編集:これはコードの一部です。これは、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()
4

1 に答える 1

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()
于 2013-09-29T19:38:05.927 に答える