Selenium 无法打开(复杂)网址
我在用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的文档。