web-dev-qa-db-ja.com

Python Selenium Timeout Exception Catch

私のスレッドでは、「1」または「0」に設定された単純な変数を使用して、それが再び進む準備ができているかどうかを示します。時々これがリセットされない問題をデバッグしようとすると、私はそれを持っていると思う。

接続が無限の読み込み時間にタイムアウトすることを望まないので(Seleniumのデフォルトではタイムアウトしないことになっていると思います)、以下を使用しました。

Driver.set_page_load_timeout(30)

そして後でそのスレッドでチェックします

If condition:
 isrunning = 0

私は当初、set_page_load_timeoutが30秒後にロードを停止するだけだと思っていましたが、これを正しく理解していると、実際には例外がスローされるため、次のようにする必要があります。

try:
  Driver.set_page_load_timeout(30)
except:
  isrunning = 0
  Driver.Close()

-Do whatever else in function -
If condition:
  isrunning = 0
  Driver.Close()

したがって、30秒以上実行された場合は、終了して0に設定されます。それ以外の場合は、実行されてチェックされ、後で0に設定されます。

これは小さなコードスニペットであることに感謝しますが、すべてのことはかなり長いものであり、それが重要な部分だと思います。

私がここで正しい考えを持っていることを誰かが確認できたら、私はそれを感謝します。私はすべてテストを実行する準備ができていますが、8時間に1回程度発生する問題であるため、区別するのが難しくなりますが、これは潜在的に適合すると思います。

14
PoweredByCoffee

Driver.Close()を除いて、ほとんどのコードは正常に動作しています。 Driver.close()である必要があります。 TimeoutExceptionは、ページが特定の時間内に読み込まれない場合にスローされます。以下の私のコードを参照してください:

from Selenium import webdriver
from Selenium.common.exceptions import TimeoutException

Driver = webdriver.Firefox()
try:
    Driver.set_page_load_timeout(1)
    Driver.get("http://www.engadget.com")
except TimeoutException as ex:
    isrunning = 0
    print("Exception has been thrown. " + str(ex))
    Driver.close()
32
Buaban