selenium自動化テスト動的ページの抽出大全

5464 ワード

目次
  • 一:ブラウザ情報テスト
  • 2 2:ノードの検索
  • 三:テスト動作
  • 四:ノード情報を取得する
  • 五:サブページFrame
  • を切り替える
  • 六、遅延要求
  • 7:前進と後退
  • 8:Cookies
  • 8:タブ処理
  • 九:捕獲異常
  • ここでの使い方を説明すると、インストール構成は詳しく説明されません.私の好きなブラウザドライバはChromeDriverとインタフェースのないPhantomJSです.

    一:ブラウザ情報テスト


    1.ブラウザの初期化


    次のコードでブラウザを初期化します.
    from selenium import webdriver
    
    #  browser , 
    browser = webdriver.Chrome()

    2.Webページへのアクセス

    browser.get('url ')
    #  
    print(browser.page_source)
    browser.close() #  

    二:ノードの検索


      フォームを塗りつぶしたり、クリックをシミュレートしたり、入力ボックスに文字を入力したりするには、まず位置を知る必要がありますが、seleniumは次のようなノードを検索する方法を提供しています.

    1.単一ノード


    検索方法
    説明
    find_element_by_id
    idでラベルを検索
    find_element_by_name
    nameプロパティによるラベルの検索
    find_element_by_xpath
    xpathでラベルを検索
    find_element_by_link_text
    リンクされたテキストでラベルを検索
    find_element_by_partial_link_text
    リンクされたキーワードでラベルを検索
    find_element_by_tag_name
    ラベル名によるラベルの検索
    find_element_by_class_name
    classのプロパティでラベルを検索
    find_element_by_css_selector
    cssセレクタによるラベルの検索
    もう一つの一般的な方法はfind_ですElement()は2つのパラメータを伝達し、1つはByである.検索方法、1つはfind_などの値です.Element(By.ID,id)とfind_element_by_id結果は一致した.

    2.複数のノード


      複数のノードを検索する場合、find_のような単一のノードを検索する方法に直接sを追加します.elements_by_nameまたはfind_Elements(By.NAME,name)は、リスト内の各ノードがWebElementタイプである.

    三:テスト動作


    1.シンプルなインタラクション


     seleniumは、ブラウザを駆動していくつかの操作を実行することができます.つまり、ブラウザにシミュレーションを実行させることです.以下は一般的な方法のまとめです.
    方法
    説明
    send_keys
    テキストの入力
    clear
    テキストをクリア
    click
    ボタンをクリック

    2.特殊なインタラクション


    マウスドラッグ、キーボードボタンなど、特定の実行オブジェクトがないインタラクティブな操作があります.これらの比較的複雑な動作チェーンの方法で実行されます.ここはしばらく使えないので,先に省略する.

    3.JavaScriptのシミュレーション実行


      用execute_script()メソッドはJavaScriptの実行をシミュレートすることができ,基本的にすべての複雑な動作はJavaScriptを実行する方法で実現できる.

    四:ノード情報の取得


      用get_attribute()メソッドを使用して、ノードのプロパティを取得します.  ノードのテキスト値をtextプロパティで取得します.  はid属性でノードidを取得する. locationプロパティを使用して、ページ内のノードの相対的な位置を取得します.  用tag_nameプロパティを使用してラベル名を取得します. はsizeプロパティでノードのサイズを取得します.

    五:サブページFrameの切り替え


      ページにはiframe,すなわちサブフレームというノードがあり,ページのサブページに相当する.Webページが開くと、デフォルトでは親フレーム内で操作され、子フレームのノードを取得するにはswitch_を使用します.to.frame()メソッドを切り替えます.  用switch_to.parent_frame()は、親ページの内容を取得できます.

    六、遅延要求


      seleniumではget()メソッドは、Webフレームワークのロードが完了した後に実行を終了します.この場合、Webソースを取得すると、ブラウザが完全にロードしたページではない可能性があります.追加のajaxリクエストがあれば、Webソースも正常に取得できるとは限りません.一定時間待機し、動的Webソースがすべてロードされることを確認する必要があります.プルトニウム待機方式には2つあり,1つは暗黙的待機であり,1つは明示的待機である.

    1.暗黙的な待機


      暗黙的な待機は一般的な待機であり、テストを実行するときは、先に待機してから、次のステップを行い、implicitly_wait()で、パラメータは時間です.

    2.明示的な待機


    暗黙的に待つ効果はそれほどよくありませんが、一定の時間を規定しているだけで、Webページのロード時間はネットワーク条件の影響を受けます.ここでは、検索するノードを指定し、最長待機時間を指定し、所定の時間内にロードして戻り、ロードできない場合は例外を放出する明示的な待機方法があります.例は次のとおりです.
    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
    
    browser = webdriver.Chrome()
    browser.get('url ')
    #  20s
    wait = WebDriverWait(browser,20)
    #  expected_conditions, presence_of_element_located 
    input = wait.until(EC.presence_of_element_located(By.ID,'a'))
    #  , element_to_be_clickable ,10 , 
    button = wait.until(EC.element_to_be_clickable(By.CSS_SELECTOR,'.btn-ss'))
    print(input,button)

    次はすべての待機条件です.
    待機条件
    説明
    title_is
    タイトルはある内容です
    title_contains
    タイトルに内容が含まれています
    presence_of_all_elements_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
    ノードにDOMが存在するかどうかを判断し、ページがリフレッシュされたかどうかを判断します.
    element_to_be_selected
    ノード選択可能、ノードオブジェクトへの転送
    element_located_to_be_selected
    ノード選択可能、入力ロケータグループ
    element_selection_state_to_be
    入力ノードオブジェクトとステータスは、等しくTrueを返します.そうでなければFalseを返します.
    element_located_selection_state_to_be
    入力したロケータグループとステータスは、等しくTrueを返します.そうでなければFalseを返します.
    alert_is_present
    警告が表示されるかどうか

    七:前進と後退


    ジルコニウムselenium試験はback()法で後退しforward()法で前進した.

    八:Cookies


      seleniumを使用するとCookiesを容易に操作できます.  用get_Cookies()メソッドは、すべてのCookiesを取得します.  用add_Cookies()メソッドはCookiesを追加します.  用delete_all_Cookies()とdelete_Cookies()メソッドCookiesを削除します.

    八:タブ処理


      Webページにアクセスすると、各タブが開き、seleniumでもタブを操作できます.
    browser.execute_script('windows.open()')
    print(window_handles)
    browser.switch_to_window(browser.window_handles[1])

      用execute_scriptメソッドJavaScript文を実行します.ここでwindow_handlesは現在開いているすべてのタブを取得し、タブの代名詞リストを返します.ブラウザでwindow_handles[index]はindexインデックスに対応するタブにジャンプできます.

    九:異常の捕獲


    例外をキャプチャするには、try-except-finallyという文がよく使用されます.異なるエラーでは、ネットワーク接続、コード実行時間のタイムアウト、データが見つかりません.