Selenium 无法打开(复杂)网址

1 投票
1 回答
572 浏览
提问于 2025-04-17 18:17

我在用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
  • date1=01-Mar-2013+2010%3A00%3A01

奇怪的是,如果我用Firefox而不是远程的HTMLUNIT,程序就能正常工作。

我试着查找AsyncHttpObject是什么,但没有找到相关信息。

1 个回答

2

网址里不能包含任何字符,这就是为什么在使用网址进行查询之前需要“编码”它。

你可以访问 这个页面 来查看所有被编码的字符。注意,像“:”这样的字符在编码后的网址中会变成“%3A”。

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

在Python中,有一些工具可以帮助你更好地进行编码,比如来自urllib模块的urlencode()。想了解更多,可以查看urllib.urlencode的文档。

撰写回答