2013-03-07 133 views
1

我在遠程和HTMLUNIT中使用Python中的Selenium。當進行driver.get(URL),我收到以下錯誤:硒不打開(複雜)url

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

我的網址格式如下:

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

如果我排除日期1和date2領域,它作品。如果我包含任何字段,則不起作用。 我試圖格式化他們在多種編碼:

  • 日期1 = 01-MAR-2013%2010:00:01
  • 日期1 = 01-MAR-2013 2010:00:01
  • DATE1 = 01- MAR-2013%2010%3A00%3A01
  • 日期1 = 01-MAR-2013 + 2010%3A00%3A01

奇怪的是,如果我使用Firefox,而不是遠程(的HtmlUnit),它的工作原理。

我試過搜索什麼是AsyncHttpObject,但沒有成功。

回答

2

該URL不能包含任何字符。這就是爲什麼在任何查詢中使用它之前需要對url進行「編碼」的原因。

訪問this page所有編碼字符。請注意,編碼網址中的「:」將爲「%3A」。

所以「test.com?date = 10:10:10」應該是「test.com?date = 10%3A10%3A10」。

Python中有像urlencode()這樣的工具,可以幫助你更好地完成它。對於這些,請查看urllib.urlencode文檔。