PythonのSelenium非公式ドキュメントの翻訳の継続。
オリジナルは
こちらにあります 。
内容:
1.
インストール2.
最初のステップ3.
ナビゲーション4.
アイテムを検索する5.期待
6.ページ
オブジェクト7. WebDriver API
8.付録:よくある質問
5.期待
最近では、ほとんどのWebアプリケーションは
AJAXテクノロジーを使用してい
ます 。 ページがブラウザに読み込まれると、このページの要素はさまざまな時間間隔で読み込まれます。 これにより、要素を見つけるのが難しくなります;要素が
DOMに存在しない場合、ElementNotVisibleExceptionがスローされます。 期待を使用して、この問題を解決できます。 待機により、実行されるアクション(要素の検索または要素を使用したその他の操作)の間に一定の時間間隔が与えられます。
Selenium WebDriverは、暗黙的と明示的の2つのタイプの期待を提供します。 明示的な待機により、WebDriverはアクションが実行される前に特定の条件が発生するまで待機します。 暗黙の待機により、WebDriverは要素を見つけようとするときに、一定時間DOMをポーリングします。
5.1明示的な期待
明示的な待機とは、さらにコードを実行するために必要な条件を決定するコードです。 このようなコードの最悪の例は、正確なタイムアウトを設定するtime.sleep()コマンドの使用です。 必要なだけ正確に期待するコードを書くのを助けるより便利な方法があります。 WebDriverWaitとExpectedConditionの組み合わせは、そのような方法の1つです。
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Firefox() driver.get("http://somedomain/url_that_delays_loading") try: element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "myDynamicElement")) ) finally: driver.quit()
このコードは10秒間待機してからTimeoutExceptionをスローするか、10秒間に要素が見つかった場合にそれを返します。 WebDriverWaitは、デフォルトで、正常に返されるまで500ミリ秒ごとにExpectedConditionを呼び出します。 ExpectedConditionの正常な戻り値はブール型であり、trueを返すか、他のすべてのExpectedCondition型に対してnull以外を返します。
期待される条件ウェブサイトを自動化するときによく見られる特定の条件があります。 以下はそれぞれの実装です。 Selenium Pythonのバインディングはいくつかの便利なメソッドを提供するため、expected_conditionクラスを自分で記述したり、独自のユーティリティパッケージを作成したりする必要はありません。
- title_is
- title_contains
- Presence_of_Element_located
- visibility_of_element_located
- visibility_of
- Presence_of_all_elements_located
- text_to_be_present_in_element
- text_to_be_present_in_element_value
- frame_to_be_available_and_switch_to_it
- invisibility_of_element_located
- element_to_be_clickable-表示および有効化されています。
- staleness_of
- element_to_be_selected
- element_located_to_be_selected
- element_selection_state_to_be
- element_located_selection_state_to_be
- alert_is_present
from selenium.webdriver.support import expected_conditions as EC wait = WebDriverWait(driver, 10) element = wait.until(EC.element_to_be_clickable((By.ID,'someid')))
expected_conditionsモジュールには、WebDriverWaitを操作するための一連の定義済み条件が既に含まれています。
5.2暗黙の期待
暗黙的な待機は、WebDriverに、その時点では利用できない要素を見つけようとするときに、DOMを一定時間ポーリングするように指示します。 デフォルト値は0です。インストール後、オブジェクトのWebDriverインスタンスが存続する間、暗黙的な待機が設定されます。
from selenium import webdriver driver = webdriver.Firefox() driver.implicitly_wait(10)
次の章に移動:ページ
オブジェクトPS:なんらかの理由で、ユーザー
penguinoはドキュメントのさらなる翻訳の作成を停止したので、次の章を翻訳する自由をとることにしました。