1

リモートとHTMLUNITを備えたPythonでSeleniumを使用しています。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.

私のURLは次の形式です:

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

奇妙なことに、リモート (HTMLUNIT) の代わりに Firefox を使用すると、動作します。

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 に答える