0

Firefox 25 を搭載した Ubuntu 13.04 に Python 2.7.4 と selenium バインディング (「pip install selenium」でインストール) があります。PyCharm Community Edition 3.0.1 を持っています。私は非常に単純な python テスト、test_selenium.py を持っています:

from selenium import webdriver
browser = webdriver.Firefox()
browser.get("seleniumhq.org/")

上記を PyCharm から実行しようとすると、Firefox ブラウザが起動しますが、ロケーション バーに URL が表示されません。代わりに、次のように表示されます。

Traceback (most recent call last):
  File "/home/nimbula/svn/nimbula/ui-selenium-tests/test-selenium.py", line 18, in <module>
    browser = webdriver.Firefox()
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", line 60, in __init__
    desired_capabilities=capabilities)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 71, in __init__
    self.start_session(desired_capabilities, browser_profile)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 113, in start_session
    'desiredCapabilities': desired_capabilities,
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 164, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 136, in check_response
    raise exception_class(value)

selenium.common.exceptions.WebDriverException: メッセージ: u'

メッセージは、次のエラーを含む html ファイルです。

The proxy could not connect to the destination in time. Please verify the site you are attempting to access and retry.\n    </td>\n  </tr>\n</table>\n<!--/Content-->\n\n<!--Info-->\n<table class="infoTable">\n  <tr>\n    <td class="infoData">\n      <b>URL: </b><script type="text/javascript">break_line("http://127.0.0.1:51991/hub/session");</script>

したがって、上記から、selenium webdriver が 127.0.0.1:5199 にアクセスしようとしているように見えますが、プロキシは呼び出しをインターセプトします。次のコードを試しました:

from selenium import webdriver

PROXY_HOST = "<corp proxy>"
PROXY_PORT = 80

profile = webdriver.FirefoxProfile()
profile.set_preference("network.proxy.type", 1)
profile.set_preference("network.proxy.http", PROXY_HOST)
profile.set_preference("network.proxy.http_port", PROXY_PORT)
profile.set_preference("network.proxy.ftp", PROXY_HOST)
profile.set_preference("network.proxy.ftp_port", PROXY_PORT)
profile.set_preference("network.proxy.ssl", PROXY_HOST)
profile.set_preference("network.proxy.ssl_port", PROXY_PORT)
profile.set_preference("network.proxy.socks", PROXY_HOST)
profile.set_preference("network.proxy.socks_port", PROXY_PORT)
profile.set_preference("network.proxy.no_proxies_on", "127.0.0.1")
profile.update_preferences()

browser = webdriver.Firefox(firefox_profile=profile)
browser.get("seleniumhq.org/")

それでも同じエラーが表示されます。ブラウザー ウィンドウが開いているので、ネットワーク設定を確認しました。それらは Python コードで指定されているとおりです。127.0.0.1 が [プロキシなし] ボックスに表示されます。私も次のことを試しました:

  1. PyCharm -> Settings -> Http Proxy でプロキシを None に設定し、プロキシを設定しないコードを実行します。

  2. PyCharm -> Settings -> Http Proxy でプロキシを「Use proxy」に設定し、例外ボックスに 127.0.0.1 で必要なすべての情報を指定します。

上記のどれも機能しませんでした。また、コマンドラインからスクリプトを実行しようとしました。最初に「unset http_proxy」を実行してから、プロキシ設定なしでスクリプトを実行した場合にのみ機能します。プロキシ設定を試してみると、再び機能しません。PyCharm からテストを実行できる必要があります。したがって、私の質問は2つあります。

  1. PyCharm からプロキシを強制しないようにするにはどうすればよいですか ([設定] -> [プロキシ] -> [なし] が機能しませんでした)。おそらく、コマンド ラインで「unset http_proxy」を実行し、同じコマンド ライン ウィンドウから PyCharm を起動すると、動作する可能性があります。コマンドラインからpycharmを起動するにはどうすればよいですか? 「pycharm」が見つからず、/bin/pycharm も見つかりません。

  2. Selenium からのプロキシ設定を Firefox で強制的に「なし」にするにはどうすればよいですか?

ご意見ありがとうございます。

4

1 に答える 1

0

これまでの私の調査結果は次のとおりです。

  1. PyCharm にプロキシを使用しないように強制する:

    を。コマンド ライン ウィンドウ (アクセサリ - > ターミナル) で、プロキシの設定を解除します。

    unset http_proxy
    

    b. 同じコマンドライン ウィンドウから pycharm を起動します。

    <install dir>/bin/pycharm.sh
    

    上記は私の問題を解決します。

  2. Selenium/python から Firefox でプロキシを「プロキシなし」に設定する方法が見つかりません。次のように webdirver を起動する場合:

    browser = webdriver.Firefox(proxy=None)
    

    起動したブラウザ ウィンドウでは、プロキシが「プロキシなし」に設定されておらず、「システム プロキシ設定を使用」に設定されています。Python からプログラムで Firefox プロキシを「プロキシなし」に設定する方法を誰かが知っている場合は、共有してください。それ以外の場合は、selenium/python の制限だと思います。

Selenium webdriver がどのように機能するかはわかりませんが、ブラウザのプロキシを「プロキシなし」に設定しても (可能であれば)、上記の問題は解決しない可能性があると思います。Webdriver が正しく機能するためには、システム プロキシを設定解除する必要がある場合があります。Unix で使用する場合

unset http_proxy

Windows 上

set proxy to none from IE (that will change the system proxy).

誰かが説明またはより良い解決策を持っている場合は、共有してください。

于 2013-11-04T23:06:14.217 に答える