0

JS の評価後にページのコンテンツが必要になるため、Selenium をスクレイパー/クローラーとして使用しています。それぞれがセレンを実行している 5 台の EC2 マシンと、私が作成したスクレーパーのインスタンスがいくつかあります。

しかし、私はいくつかの非常に奇妙な動作に気付きました。数時間後、セレンはほぼ同時にすべてのマシンで停止します。すべてのサーバーでセレンとスクレイパーを同時に開始することを考えると、セレンには長時間の後にポップアップする問題があると思われます。

セレンのログは次のとおりです。

14:34:58.628 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub
14:34:58.629 INFO - Version Jetty/5.1.x
14:34:58.630 INFO - Started HttpContext[/selenium-server/driver,/selenium-server/driver]
14:34:58.631 INFO - Started HttpContext[/selenium-server,/selenium-server]
14:34:58.631 INFO - Started HttpContext[/,/]
14:34:58.753 INFO - Started org.openqa.jetty.jetty.servlet.ServletHandler@6a669053
14:34:58.753 INFO - Started HttpContext[/wd,/wd]
14:34:58.764 INFO - Started SocketListener on 0.0.0.0:4444
14:34:58.765 INFO - Started org.openqa.jetty.jetty.Server@2ef36617
21:24:41.031 INFO - Shutting down...

私が気付いたもう 1 つの興味深い点は、各クラスターで、常に 1 つのスクレーパー インスタンスで次のエラーが発生していることです。

File "SiteScraper.py", line 238, in _add_rendered_html
    self.browser.get(url)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 168, in get
    self.execute(Command.GET, {'url': url})
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 156, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 147, in check_response
    raise exception_class(message, screen, stacktrace)
WebDriverException: Message: u'Modal dialog present'

これは、selenium または firefox (Web ドライバーで使用しているブラウザー) が一定時間後にモーダルをポップアップしていることを意味すると思います。

誰かが同様の問題/これを修正する方法についての洞察を持っていますか?

4

1 に答える 1

0

マシンで Selenium スタンドアロン サーバーを起動する場合は、Java コマンドの -timeout オプションを使用してみてください。最初に非常に小さい値を設定して、問題の原因であるかどうかを確認してください。おそらく非常に高いものにそれを増やすよりも。

于 2012-08-01T18:32:22.663 に答える