Webオートメーション、HeliumはなぜSeleniumに取って代わったのですか?


1.Heliumって何?
HeliumはWeb端末の自動化オープンソースフレームワークで、フルネームは:Selenium-Python-Hellium、名前から分かるように、HeliumはSeleniumと密接に関係しているようです
確かに、HeliumはSeleniumに対してパッケージ化されており、Seleniumの多くの実装の詳細を遮断し、より簡潔で直感的なAPIを提供し、Web側の自動化を容易にしています.
公式には、同じ機能を実現するには、HeliumがSeleniumより30%-50%少ないコードを実現すると明らかにした.
現在、HeliumはChromeとFireFoxのみをサポートしています
2.メリットとデメリット
Heliumには主に次の6つの利点があります.
  • HeliumにはWebDriverが付属しており、ブラウザドライバ
  • をダウンロード、構成する必要はありません.
  • 埋め込みページiframeページ要素は直接操作され、switch_を使用する必要はありません.to.frame()切替iframe
  • フォームの管理はより便利で、ウィンドウのタイトルまたは一部のタイトルの内容を直接使用してフォーム
  • を切り替えることができます.
  • 暗黙的に待機し、ある要素に対してクリック操作を実行し、Seleniumが要素が現れなければ、スクリプトは実行に失敗する.Heliumのデフォルトは最大10 s待ちで、要素が現れるとすぐにクリック操作
  • を実行します.
  • は明示的に待機し、Heliumはページ要素の出現を待つためにより優雅なAPIを提供する
  • APIはより簡潔で直感的で、コード量は
  • 少ない.
    Heliumの主な欠点は、次のとおりです.
  • パッケージは、多くの詳細を遮断するため、二次開発
  • には適していない.
  • 現在はChromeとFireFoxブラウザ
  • のみサポートされています
  • バージョンの更新が遅い、バグが残っている、ドキュメントが少ない
  • 3.準備しておく
    対応する仮想環境に切り替え、pipコマンドで依存をインストールすればよい
    #     
    pip3 install helium

    次に、IDEでhelium._を使用します.all__印刷に含まれる属性と方法
    Heliumに含まれる操作アクション,コントロールオブジェクト,キーボード操作キーワードは,ほとんどの自動化操作シーンを基本的にカバーしていることが分かった.
    4.Selenium VS Helium
    ラバか馬か、引っ張ってつるつる~
     
    次に、登録126メールボックスを例に、SeleniumとHeliumを比較します.
    1、従来のSelenium実現
    まず、WebDriverをダウンロードして構成し、WebDriverオブジェクトをインスタンス化し、メールボックスにログインするホームページを開く必要があります.
    from selenium import webdriver
    
    #    Driver
    driver = webdriver.Chrome()
    #     10s
    driver.implicitly_wait(10)
    #      
    driver.get(home_url)

    Web要素を観察すると、入力ボックス領域がiframe埋め込みページに包まれていることがわかります.
    switchを使う必要がありますto.frame()関数は、iframe内部の要素を操作するために対応するiframeに切り替えられます.
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.support.ui import WebDriverWait
    
    #          
    wait = WebDriverWait(driver, 10, 0.5)
    
    #       iframe,          
    wait.until(
        EC.frame_to_be_available_and_switch_to_it(driver.find_element_by_xpath('//iframe[contains(@id,"x-URS-iframe")]')))

    次に、Selenium API(ここではXpathを例に挙げる)を使用して、ユーザ名とパスワード入力ボックス、ログインボタンを検索する.ユーザー名とパスワードを入力し、ログイン操作をシミュレートします.
    #       
    element_input = wait.until(EC.visibility_of(driver.find_element_by_xpath('//input[@name="email"]')))
    element_input.clear()
    element_input.send_keys(username)
    
    #      
    element_password = wait.until(EC.visibility_of(driver.find_element_by_xpath('//input[@name="password"]')))
    element_password.clear()
    element_password.send_keys(password)
    
    #     
    wait.until(EC.element_to_be_clickable((By.XPATH, '//a[@id="dologin"]'))).click()

    最後に、あるページ要素が現れたかどうかによってログインに成功したかどうかを判断します.
    #             
    #       +          
    result = True
    try:
        element_recy_email = wait.until(EC.element_to_be_clickable((By.XPATH, '//span[@class="oz0" and contains(text(),"   ")]')))
        if element_recy_email:
            result = True
        else:
            result = False
    except Exception as e:
        result = False
    
    print("      " if result else "      ")

    2、Helium実現
    次に、私たちはHeliumの方法でこの操作を実現します.
    まず、ホームページを開くには2行のコードしか必要ありません.
    from helium import *
    
    #     
    driver = start_chrome(home_url)
    
    #         
    wait_until(Text("        ").exists)

    次に、TextFieldコントロールオブジェクトとプリセットテキストコンテンツを内蔵し、writeアクションを使用してユーザー名とパスワードを入力します.
    #      iframe,    
    write(username,TextField('         '))
    write(password,TextField('    '))

    特筆すべきは、Heliumはiframeを切り替える必要がなく、埋め込みページ要素を直接操作することができ、あまり便利ではありません.
     
    次に、キーボードのEnterをタップしてログイン操作を完了する
    #     Enter   
    press(ENTER)

    Helium内蔵wait_を介してuntilメソッド+コントロールオブジェクトは、要素の出現を明示的に待つことができ、デフォルトの最長時間は10 sである.例えば、ここでログイン完了を待つホームページのロードが完了し、受信ボックスをクリックして、クリック操作を実行することができる.
    wait_until(Text('   ').exists)
    
    #      
    click(Text('   '))

    最後にkill_を呼び出しますbrowser()メソッドブラウザを閉じ、自動化操作を終了
    #   
    sleep(10)
    
    #      kill_browser()

    Heliumはstart_を使用していますchrome()メソッドが返すオブジェクトは実際にはWebDriverオブジェクトであり,Selenium APIと組み合わせて使用できる.
    5.最後に
    上の比較から、HeliumはSeleniumより使いやすいようですが、複雑なページには適用されません.
    したがって、実際の自動化プロジェクトでは、SeleniumとHeliumを組み合わせて使用することをお勧めします.簡単なページではHeliumを使用し、複雑なページではSeleniumに切り替えます.
    もしあなたが文章が悪くないと思ったら、みんなにほめて、分かち合って、伝言の下で、これは私がもっと良質な文章を出力し続ける最強の動力になるからです!