硒不会打开(复杂)网址

时间:2013-03-07 15:53:19

标签: python selenium htmlunit

我在Python中使用Selenium与远程和HTMLUNIT。在执行driver.get(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

如果我排除date1和date2字段,它就可以了。如果我包含任何字段,则不起作用。 我尝试用多种编码格式化它们:

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

奇怪的是,如果我使用Firefox而不是远程(HTMLUNIT),它可以工作。

我尝试搜索什么是AsyncHttpObject,但没有成功。

1 个答案:

答案 0 :(得分:2)

网址不能包含任何字符。这就是为什么在任何查询中使用url之前需要对其进行“编码”的原因。

访问this page查看所有已编码的字符。请注意,编码后的URL中“:”将为“%3A”。

所以“test.com?date=10:10:10”应该是“test.com?date=10%3A10%3A10”。

像urllib模块中的urlencode()这样的python中的工具可以帮助你做得更好。对于那些,请检查urllib.urlencode文档。