(XVIII)待っている要素のwebdriverをAPIセット - ディスプレイを待っています

エッセイやレコードは、仲間の旅行者へのアクセスを容易にします。

#私------------------------------------------------ -------------------------------------------分割線は残念です

  学習セレン自動化する前に、それは操作と位置決め要素の原理を理解するのに役立つ、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)スリープサイクルが決定され続け、印刷「タイムアウト」の情報。

 

おすすめ

転載: www.cnblogs.com/lirongyang/p/11457848.html