まず、なぜ要素が待っているでしょうか?
UI自動化プロセスでは、要素の影響は、ネットワーク環境、機器の性能やその他の要素によって表示されます。そのため、時間の矛盾の要素への負荷と実行スクリプトへの要素は、文句を言うでしょう:要素を配置することはできません。
例えば、単純なケース:実際のUIテスト自動化、ログイン制御インターフェースの新しい活動を開始する必要性、あるいは爆弾ボックスをロードする必要をクリックするか、ページを正常にリフレッシュされた後、負荷データにネットワークを要求し、その後、いくつかの時間を待つ必要がある、新しいインターフェースがに登場しましたUIは、そうでない場合は、データがまだロードさINGで、動作を継続するために、スクリプトは操作のための新しいインターフェイスコード、スクリプトエラーを実装し始めています。
第二に、待っている要素の役割
- セットの要素は、効率を改善するために、スクリプトの堅牢性を高め、待ちます。
- 自然はアドレスタイミングのミスマッチにある:スクリプトの実行、スクリプトの実行速度や読み込み速度は必ずしも同じページ要素ではありません
第三に、待機中の要素の型
- 待つことを余儀なく:待機ダイを、固定レイテンシ設定 - 睡眠を(2)#は5秒を待機させ、パッケージをインポートするための時間(インポート時)
- 設定した待ち時間の要素の全体のために - driver.implicitly_wait(5):劣性待ち
- ドミナント待ち:要素の特定のセットを待つ - (selenium.webdriver.support.uiインポートWebDriverWaitから)パッケージに導入する、WebDriverWait(ドライバ、タイムアウト、poll_frequency = 0.5、ignored_exception =なし)
待機中の要素を設定する方法第四に、
応用例1.強制待ち状態:
appium インポートwebdriverを インポート時間 desired_caps = {}は [desired_caps ' platformName ' ] = ' アンドロイド' desired_caps [ ' platformVersion ' ] = ' 5.1.1 ' desired_caps [ ' DEVICENAME ' ] = ' 127.0.0.1:62001 ' desired_capsを[ ' のpackageName ' ] = ' com.cnblogs.android ' desired_caps [ 'packagActivity "] = ' Com.cnblogs.android.SplashActivity ' desired_caps [ ' unicodeKeyboard ' ] = 真 desired_caps [ ' resetKeyboard ' ] = Trueの ドライバ = webdriver.Remote(' http://127.0.0.1:8888/wd/hub ' 、desired_caps ) #かかわらず現れる要素を待つかどうかの、5Sを待機させ、5Sに待機する必要があります time.sleep(5 ) driver.find_element_by_id(「com.cnblogs.android:id/TabSearch 」).click() time.sleepを( 2 ) ドライバー.find_element_by_id(「com.cnblogs.android:id/txtSearch').send_keys(' 方缘' ) driver.find_element_by_id(' com.cnblogs.android:id/search_btn ' ).click() driver.quit()
2.暗黙の待ち時間:
appium インポートwebdriverを インポート時間 desired_caps = {}は [desired_caps ' platformName ' ] = ' アンドロイド' desired_caps [ ' platformVersion ' ] = ' 5.1.1 ' desired_caps [ ' DEVICENAME ' ] = ' 127.0.0.1:62001 ' desired_capsを[ ' のpackageName ' ] = ' com.cnblogs.android ' desired_caps [ 'packagActivity "] = ' com.cnblogs.android.SplashActivity ' desired_caps [ ' unicodeKeyboard ' ] = 真 desired_caps [ ' resetKeyboard ' ] = Trueの ドライバ = webdriver.Remote(' http://127.0.0.1:8888/wd/hub ' 、desired_caps ) #隐性等待(等待所有元素)、最长3S driver.implicitly_wait(3 ) driver.find_element_by_id(' com.cnblogs.android:id/TabSearch ' ).click() time.sleep( 2 ) driver.find_element_by_id(「com.cnblogs.android:id/txtSearch').send_keys(' 方缘' ) driver.find_element_by_id(' com.cnblogs.android:id/search_btn ' ).click() driver.quit()
3.支配待っています:
appium インポートwebdriverを から selenium.webdriver.support.ui インポートWebDriverWait インポート時間 desired_caps = {} [desired_caps ' platformName ' ] = ' アンドロイド' desired_caps [ ' platformVersion ' ] = ' 5.1.1 ' desired_caps [ ' DEVICENAME ' ] = ' 127.0.0.1:62001 ' desired_caps [ ' のpackageName ' ] = 'com.cnblogs.android ' desired_caps [ ' packagActivity ' ] = ' com.cnblogs.android.SplashActivity ' desired_caps [ ' unicodeKeyboard ' ] = 真 desired_caps [ ' resetKeyboard ' ] = Trueの ドライバ = webdriver.Remote(' HTTP://127.0 .0.1:8888 / WD /ハブ" 、desired_caps) #特定の要素が表示されるのを待っている明示的な待ち時間() #ラムダ関数は、動的なランタイムを作成する方法を提供します。 WebDriverWait(ドライバー,. 3)(.until ラムダ X:x.find_element_by_id(「com.cnblogs.android:id/TabSearch' ))。()をクリックし driver.find_element_by_id(' com.cnblogs.android:id/TabSearch ' ).click() time.sleep( 2 ) driver.find_element_by_id(' com.cnblogs.android:id/txtSearch ")。 send_keys(' 方缘' ) driver.find_element_by_id(' com.cnblogs.android:id/search_btn ' ).click() driver.quit()