エッセイやレコードは、仲間の旅行者へのアクセスを容易にします。
#私------------------------------------------------ -------------------------------------------分割線は残念です
学習セレン自動化する前に、それは操作と位置決め要素の原理を理解するのに役立つ、HTML、CSS、JavaScriptやその他の知識を習得するのが最善です。Pythonとセレンに関するその他の情報のために独自の検索をインストールし、
ここで導入していない、すべての例は、使用 python3.6 +セレン実行を。
今日では、ほとんどのWeb 使用するアプリケーションAJAXの技術を。ときにブラウザがページのロード時に、ページ上の要素は、要素の位置決めが困難を増す与える、同時にロードすることができませんでした。なぜなら要素のロードの遅延が発生した場合ElementNotVisibleExceptionの事態が発生し、それが自動化スクリプトの安定性が低下します、我々はこのような問題原因を改善するために待機する不安定の要素を設定することができます。
webdriverをは明示的および暗黙の待機待ち:待機の2種類が用意されています。
#私------------------------------------------------ -------------------------------------------分割線は残念です
表示待ち
以下のための明示的な待機 webdriverをは条件が存在するかどうかを続行するのを待つか、あるいはタイムアウトを放棄は、最大時間例外(到達TimeoutExceptionを)。
セレン輸入webdriverを から selenium.webdriver.common.byの輸入によって から selenium.webdriver.support.uiの輸入WebDriverWait から selenium.webdriver.supportの輸入expected_conditions ECのよう ドライバ = webdriver.Chrome() driver.get(" のhttp:// www.baidu.com " ) 要素(ドライバ、5,0.5 = WebDriverWait (.until) EC.presence_of_element_located((By.ID、" KW 」)) ) element.send_keys(' セレン" ) driver.quit()
WebDriverWait クラスがある webdriverを提供する方法を待っています。設定時間内、時間にデフォルトの時間は、現在のページ要素が存在したら、テストされ、それが設定時間を超えた場合に例外がスローされた検出されません。次の形式:
WebDriverWait(ドライバ、タイムアウト、poll_frequency = 0.5、ignored_excptions =なし)
ドライバ:ドライバのブラウザ。
タイムアウト:最大タイムアウト(秒)デフォルト。
poll_frequency :間隔(ステップ)を検出デフォルトは0.5秒。
ignored_exceptions :タイムアウト後の異常情報、デフォルトでは、スローNoSunchElementExceptionの例外を。
WebDriverWait()一般的に行われるまで、又は()until_not 以下を用いた方法があるまで、及び()until_not 方法が記載されています。
まで(メソッド、メッセージ=「」 )#は、 戻り値になるまで、パラメータの方法を提供するドライバを呼び出し真。
until_not(メソッド、メッセージ=「」 )#は、 戻り値になるまで、パラメータの方法を提供するドライバを呼び出し偽。
本実施形態においては、によってようキーワードexpected_conditions リネームECを、そしてコールpresence_of_element_located()要素が存在するかどうかを決定するための方法。
expected_conditions 方法企図クラスは、以下の表に決定された条件を提供します。
方法 |
説明 |
title_is |
予想されるに等しい現在のページのタイトルかどうかを確認 |
title_contains |
現在のページのタイトルが期待される文字列が含まれているかどうかを確認 |
presence_of_element_located |
要素がロードされているかどうかを決定したDOM ツリー、目に見えるその特定の要素を意味するものではありません |
visibility_of_element_located |
決定要素が表示されている(非隠された要素の代わりに、可視、および要素の幅と高さが等しくない場合0 ) |
visibility_o |
およびパラメータ要素を受信し、同じアクションのための方法が、測位方法パラメータには、位置決め |
presence_of_all_elements_located |
少なくとも一つの要素があるかどうかを決定することに存在しているのDOM ツリー。例えば、のページ内のn個の要素のクラスに限り、既存の戻りがあるとして、「WP」トゥルー |
text_to_be_present_in_element |
要素を決定するテキストは、期待される文字列が含まれています |
text_to_be_present_in_element_value |
判定の要素valueshuxingは、予想される文字列が含まれています |
frame_to_be_available_and_switch_to_it |
可能な場合は、フォームに切り替える返すかどうかの決定はTrue とスイッチでは、そうでない場合はFalse |
invisible_of_element_located |
要素が中に存在していないかどうかを決定したDOM ツリーや目に見えません |
element_to_he_clickable |
要素が可視およびクリック可能であるか否かを決定 |
staleness_of |
要素まで待ってDOMの木の除去 |
element_to_be_selected |
要素が選択されているかどうかを決定する、一般的に、ドロップダウンリストで使用されます |
element_selection_state_to_be |
要素が期待に沿って選択されたかどうかを決定します |
element_located_selection_state_to_be |
パラメータは位置パラメータを受信した測位方法パラメータの同じ、唯一つのパラメータに作用する方法 |
alert_is_present |
ページがあるかどうかを判断するには、アラート |
また expected_conditions 意図で提供される方法を判定リッチ条件には、前にも使用することができる学習しis_displayed()要素が表示されるかどうかを決定するための方法。
セレンインポートwebdriverを から時間インポート睡眠、CTIMEの ドライバ = webdriver.Chrome() driver.get(" http://www.baidu.com " ) プリント(CTIME()) のための I における範囲(5 ): 試してください: エル = driver.find_element_by_id(' kw22 ' ) 場合el.is_displayed(): ブレーク 睡眠( 1 ) を除く: 印刷("タイムアウト」) パス driver.close() プリント(CTIME())
結果は:
相対的に言っては、このアプローチをより容易にすることによって、理解されているためにループ5 回、要素決定各サイクルis_displayedを()状態であるか否かをtrueにいるかのように、trueに、次に破壊ループのうち、そうでない場合(1)スリープサイクルが決定され続け、印刷「タイムアウト」の情報。