1

私はセレンを使用して、かなりの数のページをロードすることを含むいくつかの作業を行っています。Firefoxブラウザーがフリーズしているため、多数の画像やフラッシュ広告が含まれている可能性があります。セレンは、タスクマネージャーで「応答しない」という恐ろしい状態に達し、タブをクリックしてもフォーカスされないように、ブラウザーがフリーズしているかどうかを検出できますか?そうでない場合、誰かがそのケースに対処する方法を知っていますか?

編集:

私は次のものを使用することになりました:

  browser = webdriver.Firefox()
  try:
    browser.set_page_load_timeout(_DEFAULT_LOAD_TIME)
    browser.get('http://' + domain)
  except TimeoutException as te:
    print "Loading %s timed out. Killing browser." % domain
    print te
    browser.close()

(応答しない)状態になった場合はブラウザを閉じませんが、_DEFAULT_LOAD_TIMEが十分に低い場合は、通常、その状態になる前にブラウザを強制終了できます。

4

2 に答える 2

2

少なくとも、Seleniumのタイムアウトを設定できます。次の例では、Webドライバーは最大10秒待機してから、ブラウザーを強制終了してテストに失敗します。このようにして、最終的にすべてのテストを実行することができます。

from selenium import webdriver

ff = webdriver.Firefox()
ff.implicitly_wait(10) # seconds
ff.get("http://somedomain/url_that_delays_loading")
myDynamicElement = ff.find_element_by_id("myDynamicElement")

セレン本社で詳細をご覧ください

于 2013-01-25T21:11:48.380 に答える
0

私が思いついた最善の戦略は、設定されたしきい値より長く実行されているプロセス(孤立したプロセスなど)を終了することでした。このスニペットは、を介して呼び出すことができます。これは、javascriptの誤動作が原因でブラウザがハングした場合に、webdriverJSに役立ちます。child_process.execFile('powershell.exe')chromedriver

孤立したプロセスのクリーンアップ(実行時間> 30分)

# View Processes Running > 30 MIN
Get-Process -name firefox | ? { $_.StartTime -lt (Get-Date).AddMinutes(-30) } | select pid, starttime | Sort-Object starttime

# Terminate Processes Running > 30 MIN
Get-Process -name firefox | ? { $_.StartTime -lt (Get-Date).AddMinutes(-30) } | Stop-Process -Force
于 2017-06-20T14:18:42.603 に答える