from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
browser = webdriver.Firefox()
browser.get("http://testsite.com")
element = WebDriverWait(browser, 10).until(lambda browser : browser.find_element_by_id("element"))
element.click() # it actually goes to page http://testsite.com/test-page.html
print "Just clicked! And I'm expecting timeout error!"
new_element = WebDriverWait(browser, 0.1).until(lambda browser : browser.find_element_by_id("element"))
print "Too bad there's no timeout error, why?!"
でも、待機時間を0.1秒に設定しても、タイムアウト例外はスローされません。 element.click()
が実行されると、ページ全体が読み込まれるまでブロックされないので、Just clicked! And I'm expecting timeout error!
が表示され、驚いたことにnew_element = WebDriverWait(browser, 0.1).until(lambda browser : browser.find_element_by_id("element"))
がページ全体が読み込まれるまで待機します。 implicit waits
を使用すると、同じ結果になります。さこれがタイムアウトエラー(セレン2 webdriver)で終わらない理由を教えてください。
私のポイントは、あなたがそれが悪いため、プロキシのアップロードするために、ページのにも、時間を取る可能性がある要素をクリックし、時には後、で、あなたは明らかには、あなたが望むもの、長いものを待ちたくありませんタイムアウト例外。この場合、どのように機能させるのですか?
私はあなたが何を意味するかは分かりません。もっと具体的にしてください、どうすればいいですか? – Shane
...そして2.22にアップグレードすると、私は無意識にこの暗黙の待ちに頼ったすべての場所を実現しました。 XD – Isaac
私はこれがかなり正しいとは思わない。あなたはdriver.set_page_load_timeout()について話していますが、それはクリックと関係ないと思います。すべてのクリックでページが読み込まれるわけではありません。ページの読み込みタイムアウトは、ページを読み込むためのものです。質問者は要素を見つけるだけでタイムアウトに問題があります(クリックする必要はありません)。 – Purrell