1

我在 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
  • 日期 1=01-Mar-2013%2010%3A00%3A01
  • 日期 1=2013 年 3 月 1 日+2010%3A00%3A01

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

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

4

1 回答 1

2

URL 不能包含任何字符。这就是为什么您需要在任何查询中使用它之前对 url 进行“编码”。

访问此页面以获取所有编码字符。请注意,“:”在编码的 URL 中将是“%3A”。

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

python 中有一些工具,比如 urllib 模块中的 urlencode() 可以帮助你做得更好。对于这些,请查看 urllib.urlencode 文档。

于 2013-12-18T15:11:01.613 回答