2013-03-07 4 views
1

Я использую Selenium в Python с дистанционным и HTMLUNIT. При выполнении driver.get (URL), я получаю следующее сообщение об ошибке:Selenium не открывается (сложный) url

Traceback (most recent call last): 
[...] 
    raise exception_class(message, screen, stacktrace) 
selenium.common.exceptions.WebDriverException: Message: u'ReferenceError: "AsyncHttpObject" is not defined. 

Мой URL имеет следующий формат:

http://www.test.com?date1=01-Mar-2013%2010:00:01&date2=07-Mar-2013%2010:00:01&xx=yy&etc=etc

Если я исключить date1 и date2 поля, он работает. Если я включаю любое из полей, это не сработает. Я пытался отформатировать их в нескольких кодировках:

  • date1 = 01-Mar-2013% 2010: 00: 01
  • date1 = 01-Mar-2013 2010: 00: 01
  • date1 = 01- Март 2013% 2010% 3A00% 3A01
  • date1 = 01-Mar-2013 + 2010% 3A00% 3A01

Weird вещь, что если я использую Firefox вместо удаленного (HtmlUnit), она работает.

Я пробовал искать то, что такое AsyncHttpObject, но безуспешно.

ответ

2

URL-адрес не может содержать символ. Вот почему вам нужно «закодировать» URL-адрес перед его использованием в любом запросе.

Посетите this page для всех кодированных символов. Обратите внимание, что «:» будет «% 3A» в кодированном URL.

Так что «test.com?date=10:10:10» должно быть «test.com?date=10%3A10%3A10».

Есть инструменты в python, такие как urlencode() из модуля urllib, которые могут помочь вам сделать это лучше. Для них проверьте документацию urllib.urlencode.

Смежные вопросы