2013-03-07 95 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文档。