この記事はもともとLambdatestで公開されました。 SitePointを可能にしてくれたパートナーをサポートしてくれてありがとう。 Seleniumは、主にクロスブラウザーテストに使用される一般的な自動化テストフレームワークです。オープンソースであり、Firefox、Chrome、Internet Explorer、Microsoft EdgeなどのさまざまなブラウザーでWebアプリケーションのテストを自動化するのに最適です。 Seleniumは有名なフレームワークになり、HP QTP(クイックテストプロフェッショナル)や別名HP UFT(Unified Functional Testing)などの他のテストフレームワークに厳しい競争を与えています。 Selenium WebDriverのこのチュートリアルは、Selenium Suite、Selenium WebDriverアーキテクチャのコンポーネントの基本的な理解を開発するのに役立ち、Google Chrome、Mozilla Firefox、およびGoogleのセレンムWebドライバーを使用したクロスブラウザー互換性のWebサイトをテストする自動化を実行する方法を示します。インターネットエクスプローラー。
Seleniumはさまざまなツールの組み合わせであり、各ツールはWebテストの自動化に重要な役割を果たします。 WebDriverチュートリアルに飛び込みましょう
キーテイクアウト
さあ、このセレンWebDriverチュートリアルで、これらのコンポーネントを詳細に見てみましょう。
Selenium IDEは単純なFirefoxプラグインであり、スクリプトの記録と再生に使用されます。ただし、Selenium IDEは、単純なユースケースのテストを自動化するための自動化スクリプトの作成にのみ使用できます。 Selenium IDEは、条件付きステートメント、例外処理、ループ、スクリーンショットキャプチャなどをサポートしていません。複雑なユースケースを自動化するために、開発者とテスターの大部分は、レコードおよびリプレイテストの代わりにスクリプトテストを選択することを好みます。 Selenium Test Suiteは、Selenium Remote Control(RC)またはSelenium WebDriverで構成されています。
Selenium IDEは、さまざまなオペレーティングシステム、すなわちWindows、Linux、Mac OSなどで使用できます。FirefoxのSelenium IDEはここからダウンロードできます。セレンリモートコントロール(RC)
コアセレンフレームワークが含まれており、主にブラウザに同じものを注入する責任があります。
クライアントプログラムはコマンドをRCに送信し、サーバーによって解釈され、ブラウザに送信されます。Selenium WebDriverはブラウザと直接通信するため、Selenium Serverのような個別のコンポーネントは必要ありません。ソフトウェアテスターなど、C#、Ruby、Java、Python、Perlなどに役立つトッププログラミング言語をサポートします。実行されました。以下に記載されているリンクからSelenium WebDriverをダウンロードできます。
基本に戻る:Seleniumグリッドは、異なるブラウザーとオペレーティングシステムに対して異なるマシンでテストを実行するのに同時に、並行テストに使用されます。 Selenium RCと組み合わせて仕事をします。セレングリッドの使用を紹介する例は、次のとおりです。
セレンWebDriverアーキテクチャ
<span>from selenium import webdriver </span><span>from selenium.webdriver.common.keys import Keys </span> desired_cap <span>= { </span><span>'platform' : 'win10', </span><span>'browserName' : 'chrome', </span><span>'version' : "67.0", </span><span>} </span> url <span>= "https://username:acsessToken@{LMABDA GRID URL}/wd/hub" </span> driver <span>= webdriver.Remote( </span> desired_capabilities<span>=desired_cap, </span> command_executor<span>= url </span><span>) </span> driver<span>.implicitly_wait(1) </span>driver<span>.get("http://www.google.com/") </span>driver<span>.quit() </span>
Seleniumクライアントライブラリ
前述のように、開発者はSeleniumを使用して、C#、Java、Python、Perlなどのさまざまな言語でテストコードを作成できます。セレンクライアントライブラリまたはセレン言語のバインディングにより、多言語サポートが可能です。たとえば、Pythonでコードを書いている場合、Pythonクライアントライブラリが必要になります。さまざまなプログラミング言語のセレンクライアントドライバーは、こちらからダウンロードできます。
jsonワイヤプロトコルブラウザドライバー
Chrome、Firefox、Internet Explorer、Safari、Microsoft Edgeなどの人気ブラウザでは、ブラウザドライバーが利用できるため、クロスブラウザーテストの実行にはいずれかを使用できます。ブラウザドライバーが公開されていないブラウザでWebサイトのクロスブラウザテストを実行できないことに注意してください。
SELENIUM WebDriver in Action
セレンとブラウザのドライバーの基本を知っているので、今こそ、シンプルなWebDriverスクリプトを見てみましょう。この例を見る前に、プログラミング環境の準備が整っていることを確認してください(Eclipse Marketplaceから必要なすべてのパッケージを使用してEclipseを使用しています)。 Eclipse用のSeleniumプラグインはこちらからダウンロードできます。サンプルコードはPython言語で記述されていますが、C#、Java、Perl、Rubyなどでテストコードを書くことができます。
firefox webdriverの例<span>from selenium import webdriver </span><span>from selenium.webdriver.common.keys import Keys </span> desired_cap <span>= { </span><span>'platform' : 'win10', </span><span>'browserName' : 'chrome', </span><span>'version' : "67.0", </span><span>} </span> url <span>= "https://username:acsessToken@{LMABDA GRID URL}/wd/hub" </span> driver <span>= webdriver.Remote( </span> desired_capabilities<span>=desired_cap, </span> command_executor<span>= url </span><span>) </span> driver<span>.implicitly_wait(1) </span>driver<span>.get("http://www.google.com/") </span>driver<span>.quit() </span>
コードを通り抜けましょう。アクションを実行する前に、必要なすべてのモジュールは、「Import」ステートメント[行2〜4]を使用してインポートされます。テストコードでは、Firefoxブラウザ[行7]に対してテストが行われるため、Firefox WebDriverを使用します。コードでは、FF_DRIVERは、FireFoxブラウザとの対話を実行するために使用されるWebDriverハンドルです。 WebDriverがインストールされていない場合、またはサポートがないブラウザを使用しようとする場合(WebDriver経由)、以下のエラーが発生します。
selenium.common.exceptions.webdriverexception:メッセージ: 'operadriver'実行可能ファイルはパスにある必要がありますオペラブラウザ用のWebDriverをロードしようとしたときにエラーメッセージが表示されました(マシンにWebDriverがインストールされていない)。エラーを取り除くには、OperaにWebDriverをインストールする必要があります。
ブラウザのすべての操作が完了したら、ff_driver.close()が必要なクリーンアップを行い、リソースを解放するために呼び出されます。コードを実行するには、Eclipse IDEでCtrl F9を呼び出すか、Pythonコマンドラインオプションを使用してコードをコンパイルすることができます。
Chrome webDriverの例
Selenium WebDriverチュートリアルの前のセクションでは、Firefox WebDriverを使用しました。このセクションでは、テストにChromeブラウザを使用している場合に必要な変更を確認します。スタンドアロンクロムドライバーバイナリ(Chrome Browserバイナリとは異なる)が正しいパスで利用できるようにするか、WebDriver.Chrome.Driver Environment変数の一部として存在することを確認する必要があります。 Windowsを使用している場合は、まずここからChrome WebDriverをダウンロードする必要があります。 Pythonをインストールした場所にChromedriver.exeを貼り付けます(この場合、それはデフォルトのインストールパス、つまりC:Python27Scriptsでした)。対応するWebDriver [行8]をロードする必要があり、コードの残りの部分は同じままです。以下はコードスニペットです。変更(Chrome WebDriverに必要)は、別の色で強調表示されています。
<span>from selenium import webdriver </span><span>from selenium.webdriver.common.keys import Keys </span> desired_cap <span>= { </span><span>'platform' : 'win10', </span><span>'browserName' : 'chrome', </span><span>'version' : "67.0", </span><span>} </span> url <span>= "https://username:acsessToken@{LMABDA GRID URL}/wd/hub" </span> driver <span>= webdriver.Remote( </span> desired_capabilities<span>=desired_cap, </span> command_executor<span>= url </span><span>) </span> driver<span>.implicitly_wait(1) </span>driver<span>.get("http://www.google.com/") </span>driver<span>.quit() </span>
これまでのところ、Selenium WebDriverチュートリアルでは、Firefox WebDriver&Chrome WebDriverを使用したクロスブラウザーテストを実証しました。このセクションでは、テストにChromeブラウザを使用している場合に必要な変更を確認します。ここまたはここから正しいInternetExplorer WebDriver(32ビット/64ビット)をダウンロードする必要があります。 Paste InternetExplorerDriver.exe Python(この場合、デフォルトのインストールパス、つまりC:Python27Scripts)または選択したその他の場所をインストールした場所に貼り付けます。 Python実行可能ファイルが存在するパスにInternetExplorer WebDriverをコピーする場合、Webドライバーをロードしながら「絶対パス」に言及する必要はありません[ライン7]。他のケースでは、絶対パス[行9]を指定する必要があります。以下は、別の色で強調表示されている変更(IE WebDriverに必要)のコードスニペットです。
<span># Import the necessary modules for development </span><span>import time </span><span>import unit test </span><span>from selenium import web driver </span> <span># Invoke a new Firefox Instance </span>ff_driver <span>= webdriver.Firefox() </span> <span># Blocking wait of 30 seconds in order to locate the element </span>ff_driver<span>.implicitly_wait(30) </span>ff_driver<span>.maximize_window() </span> <span># Open the required page </span>ff_driver<span>.get("http://www.lambdatest.com") </span> <span># Sleep for 10 seconds in order to see the results </span>time<span>.sleep(10) </span> <span># Close the Browser instance </span>ff_driver<span>.close() </span>
上記の例コードに見られるように、Firefox WebDriverインスタンス[行9〜16]を作成するためのコードを保持します。インポートされる新しいモジュール(アクションチェーンとキー)がいくつかあります。目的のWebページ、つまりhttps://www.lambdatest.com/がブラウザによって開かれると、リンクテキストを調べることで検索操作が実行されます(Find_Element_by_link_textメソッドを使用)。この例では、Webページで検索されるリンクテキストは「サポート」です[20〜22行目]。
検索条件に遭遇したら、(CTRLクリック)操作が実行され、「新しいタブ」[26〜30行目]でそのページを開きます。 ActionChainsモジュールは、その操作を実行するために使用されます。出力は次のとおりです<span># Import the necessary modules for development </span><span>import time </span><span>import unit test </span><span>from selenium import web driver </span> <span># Invoke a new Chrome Instance </span>ff_driver <span>= webdriver.Chrome() </span> <span># Blocking wait of 30 seconds in order to locate the element </span>ff_driver<span>.implicitly_wait(30) </span>ff_driver<span>.maximize_window() </span> <span># Open the required page </span>ff_driver<span>.get("http://www.lambdatest.com") </span> <span># Sleep for 10 seconds in order to see the results </span>time<span>.sleep(10) </span> <span># Close the Browser instance </span>ff_driver<span>.close() </span>
上記の例を見ていたので、ActionChainsを利用しました。こちらのSelenium WebDriverモジュール(Python用)の下のさまざまなモジュールをご覧ください。実装にはPython言語を使用しましたが、選択したプログラミング言語(C#、Java、Perl、Ruby、PHP)を使用できます。
ローカルWebDriver - それほどスケーラブルなアプローチ限られた数の「ブラウザオペレーティングシステムデバイス」の組み合わせでWebサイトをテストすることを計画している場合に、ローカルWebDriverを使用したテストを使用できます。ただし、組み合わせの数が多い場合、アプローチが緩和される場合があります。それはスケーラブルなアプローチではなく、非常に費用がかかる可能性があるため、あらゆる組み合わせにローカルセットアップを作成することはできません。
より良いソリューションは、クラウドでクロスブラウザーテストを実行できるLambdatestのようなプラットフォームの機能を活用することです。 LambDatestを使用して、2000の異なるブラウザー、オペレーティングシステム、およびデバイス構成でWebサイトを確認できます。開始するには、lambdatestでアカウントを作成する必要があります。 WebアプリケーションをテストするためにリモートWebDriver(lambdatestでセレングリッドを使用)を使用するため、lambdatestプロファイルからユーザー名とアクセスキーについてメモを取る必要があります。
lambdatestを使用したリモートWebDriverを使用してSeleniumスクリプトを実行していますUbuntu OS Chromeでテストを実行する必要がある場合、サーバー/ハブは、サーバーに登録されたクライアント/ノードの機能をスキャンし、マッチング機能でクライアントにリクエストを迂回させます。 Seleniumグリッドアーキテクチャには、1つのサーバーと数のクライアントのみができます。リモートドライバーAPIに関する詳細情報は、LambDatest Webサイトの他のブログで入手できます。
lambdatestにログインしたら、Lambdatest機能ジェネレーターにアクセスしてノードに必要な機能を生成する必要があります。好みのプログラミング言語(この場合はPython)と適切なOS/ブラウザの組み合わせを選択します。機能を設定しながら、スクリーンショットとビデオの録画機能を有効にすることができます。以下に示すように、私たちの要件は、Windows 10マシンにインストールされているFirefox(バージョン64.0)で実行する必要があることです。要件の機能は次のとおりです以下は、lambdatest機能ジェネレーターからのスクリーンショットです:
<span>from selenium import webdriver </span><span>from selenium.webdriver.common.keys import Keys </span> desired_cap <span>= { </span><span>'platform' : 'win10', </span><span>'browserName' : 'chrome', </span><span>'version' : "67.0", </span><span>} </span> url <span>= "https://username:acsessToken@{LMABDA GRID URL}/wd/hub" </span> driver <span>= webdriver.Remote( </span> desired_capabilities<span>=desired_cap, </span> command_executor<span>= url </span><span>) </span> driver<span>.implicitly_wait(1) </span>driver<span>.get("http://www.google.com/") </span>driver<span>.quit() </span>
lambdatestサーバーでセレングリッドを使用するため、クラウドインフラストラクチャ(リモートURLとも呼ばれる)にアクセスするためにコードを変更する必要があります。リモートURLを以下に示します:
<span>from selenium import webdriver </span><span>from selenium.webdriver.common.keys import Keys </span> desired_cap <span>= { </span><span>'platform' : 'win10', </span><span>'browserName' : 'chrome', </span><span>'version' : "67.0", </span><span>} </span> url <span>= "https://username:acsessToken@{LMABDA GRID URL}/wd/hub" </span> driver <span>= webdriver.Remote( </span> desired_capabilities<span>=desired_cap, </span> command_executor<span>= url </span><span>) </span> driver<span>.implicitly_wait(1) </span>driver<span>.get("http://www.google.com/") </span>driver<span>.quit() </span>
@hub.lambdatest.com/wd/hubは、テストが実行されるlambdatestのセレングリッドセットアップです。ユーザー認証のために、user_name(lambdatestでの登録に使用)&app_key(アクセストークン)がグリッドURLに追加されます。連結された文字列はremote_urlを形成します。リモートWebDriver APIおよび機能ジェネレーターについて知っているので、これらの要件に合わせて以前の例を移植しましょう。
parallel_test_example-1.py
<span># Import the necessary modules for development </span><span>import time </span><span>import unit test </span><span>from selenium import web driver </span> <span># Invoke a new Firefox Instance </span>ff_driver <span>= webdriver.Firefox() </span> <span># Blocking wait of 30 seconds in order to locate the element </span>ff_driver<span>.implicitly_wait(30) </span>ff_driver<span>.maximize_window() </span> <span># Open the required page </span>ff_driver<span>.get("http://www.lambdatest.com") </span> <span># Sleep for 10 seconds in order to see the results </span>time<span>.sleep(10) </span> <span># Close the Browser instance </span>ff_driver<span>.close() </span>
ユーザー名とAccessTokenはGridurlに追加されます。組み合わせは、テストケースの実行が実行されるリモートURLを形成します。
出力パネルには、デバッグ中に機器になる可能性のあるさまざまなオプションがあります。主要なオプションのいくつかは以下にあります。
例外 - テストコードの実行中に発生した例外をリストします。
メタデータ - テストが実行されたテスト環境に関する詳細情報が含まれています。この場合、テストはWindows 10マシンにインストールされているFirefox 64.0で実行されます。ブラウザの構成の詳細も取得できます。
parallel_test_example-2.py <span>from selenium import webdriver </span><span>from selenium.webdriver.common.keys import Keys </span> desired_cap <span>= { </span><span>'platform' : 'win10', </span><span>'browserName' : 'chrome', </span><span>'version' : "67.0", </span><span>} </span> url <span>= "https://username:acsessToken@{LMABDA GRID URL}/wd/hub" </span> driver <span>= webdriver.Remote( </span> desired_capabilities<span>=desired_cap, </span> command_executor<span>= url </span><span>) </span> driver<span>.implicitly_wait(1) </span>driver<span>.get("http://www.google.com/") </span>driver<span>.quit() </span>
Pythonコマンドを呼び出すことにより、2つの異なる端子で2つのテストを並行して実行します。
以下は、lambdatest Automation Logsのスクリーンショットです。ここでは、2つのテストが並行して実行されていることがわかります。
結論
Selenium WebDriverは、ポップアップウィンドウまたはアラートを処理するためのアラートインターフェイスを提供します。 spitchto()。alert()メソッドを使用してアラートに切り替えてから、accept()、dimiss()、getText()、またはsendKeys()メソッドを使用して、アラートと対話することができます。アラートを処理した後、メインウィンドウに切り替えることを忘れないでください。
Selenium WebDriverは、スクリーンショットをキャプチャするためにTakessCreenshotインターフェイスを提供するにはどうすればよいですか。 getScreenshotas()メソッドを使用して、スクリーンショットを取り、ファイルに保存できます。このメソッドは、トライキャッチステートメントのキャッチブロックまたはテストフレームワークのアフターテスト方法で、テスト障害のスクリーンショットをキャプチャして呼び出すことができます。
Selenium WebDriverは、ドロップダウンメニューと対話するための選択クラスを提供します。ドロップダウン要素をコンストラクターに渡すことにより、選択クラスのオブジェクトを作成できます。次に、オプションを選択するには、selectbyvisibletext()、selectbyvalue()、またはselectbyindex()メソッドを使用できます。 getoptions()メソッドを使用して、ドロップダウンですべてのオプションを取得することもできます。 ).frame()メソッド。このメソッドにインデックス、名前またはID、またはiframe要素を渡すことができます。 IFRAMEと対話した後、switchTo()。defaultcontent()メソッドを使用してメインウィンドウに切り替えることを忘れないでください。 Cookieと対話します。 AddCookie()メソッドを使用してCookie、GetCookienamed()メソッドを追加して特定のCookieを取得し、すべてのCookieを取得し、deleteCookie()、deletecookienamed()、またはdeleteallcookies()メソッドを取得できます。 Cookieを削除します。以上がクロスブラウザテストにSelenium WebDriverを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。