テストは、単体テスト、機能テスト、受け入れテストなど、非常に幅広いテストです。この記事では、Seleniumを使用した受け入れテストを行う方法を確認します。実用的な例を使用して、実際のユースケースを説明します。私はあなたが既にphpunitを使用して単体テストを行う方法を知っているか、少なくともそれが何であるかを把握していると思います。始めましょう。
セレンとは?
ページに移動しますhttp://myapp.dev/videos。Seleniumは、ユーザーインターフェイステストを自動化するためのツールです。ブラウザに対してアプリケーションをテストするのに役立ちます。このプロセスは、次のように説明できます
ページネーションで2番をクリックします。
Selenium WebDriver(Selenium 2)を使用する場合、テストはコマンドに変換され、Seleniumサーバーに渡されます(すぐにそれについて詳しく説明します)。
アプリケーションのセットアップ
Selenium Extensionを使用してPhPunitを使用してアプリケーションのテストを開始します。開始する前に、コンポーザーを使用してそれらをインストールしてください。
前に、コマンドはSeleniumサーバーに渡され、ブラウザに転送されると述べました。 Seleniumサーバーをダウンロードする必要があります。これは、Javaアーカイブ実行可能ファイルにすぎません。サーバーは、Java -Jar Selenium-Server-Standalone-
<span>composer require --dev phpunit/phpunit </span><span>composer require --dev phpunit/phpunit-selenium</span>
phpunitおよびselenium
<span>alias sserve="java -jar /usr/local/bin/selenium-server-standalone-<version>.jar"</span>
テストが完了したときに分解方法が呼び出され、ステージをクリアするために使用されます。ブラウザを閉じて現在のセッションを終了するために使用します。
<span>// tests/acceptance/UserSubscriptionTest.php </span> <span>class UserSubscriptionTest extends PHPUnit_Extensions_Selenium2TestCase </span><span>{ </span> <span>public function setUp() </span> <span>{ </span> <span>$this->setHost('localhost'); </span> <span>$this->setPort(4444); </span> <span>$this->setBrowserUrl('http://vaprobash.dev'); </span> <span>$this->setBrowser('firefox'); </span> <span>} </span><span>}</span>
phpunitデータプロバイダーを使用すると、テストを特定のデータで繰り返すことなくフィードすることができます。詳細については、ドキュメントで読むことができます。
<span>public function tearDown() </span><span>{ </span> <span>$this->stop(); </span><span>}</span>
Webページを操作する場合の1つの一般的なタスクは、要素の選択です。 PhpunitのSelenium拡張機能は、そのために本当に素晴らしいAPIを提供します。クラス名、タグ、名前、ID、CSSセレクター、XPathなどで要素を選択できます。メソッドは、PHPUNIT_EXTENSIONS_SELENIUM2TESTCASE_ELEMENTインスタンスを返します。値、要素のCSSを更新し、その他の一般的なタスクをたくさん更新します。私たちのページでは、次のようなことをするかもしれません。
<span>composer require --dev phpunit/phpunit </span><span>composer require --dev phpunit/phpunit-selenium</span>
データプロバイダーには、入力名と対応する値が含まれています。フォーム入力の記入と送信を処理するための個別の方法を作成します。
<span>alias sserve="java -jar /usr/local/bin/selenium-server-standalone-<version>.jar"</span>
有効なフォームの提出
<span>// tests/acceptance/UserSubscriptionTest.php </span> <span>class UserSubscriptionTest extends PHPUnit_Extensions_Selenium2TestCase </span><span>{ </span> <span>public function setUp() </span> <span>{ </span> <span>$this->setHost('localhost'); </span> <span>$this->setPort(4444); </span> <span>$this->setBrowserUrl('http://vaprobash.dev'); </span> <span>$this->setBrowser('firefox'); </span> <span>} </span><span>}</span>
<span>public function tearDown() </span><span>{ </span> <span>$this->stop(); </span><span>}</span>
テストの一部は失敗し、テスト期間が短すぎて、何がうまくいかなかったかを観察するには短すぎます。 Phpunitには、保存できるBlob画像を返すCrulentsCreenshotメソッドを使用して、失敗テストのスクリーンショットをキャプチャする機能があります。
無効なフォームの提出
<span>// tests/acceptance/UserSubscriptionTest.php </span> <span>class UserSubscriptionTest extends PHPUnit_Extensions_Selenium2TestCase </span><span>{ </span> <span>public function validInputsProvider() </span> <span>{ </span> <span>$inputs[] = [ </span> <span>[ </span> <span>'username' => 'younesrafie', </span> <span>'password' => 'mypassword', </span> <span>'password_confirmation' => 'mypassword', </span> <span>'email' => 'mymail@gmail.com', </span> <span>'cardHolderName' => 'RAFIE Younes', </span> <span>'cardNumber' => '378282246310005', </span> <span>'billingAddress' => 'Narjiss B Fez Morocco', </span> <span>'cvc' => '850', </span> <span>'expirationMonth' => '01', </span> <span>'expirationYear' => '2016', </span> <span>] </span> <span>]; </span> <span>return $inputs; </span> <span>} </span> <span>public static function invalidInputsProvider() </span> <span>{ </span> <span>$inputs[] = [ </span> <span>[ </span> <span>'username' => '@younesrafie', </span> <span>'password' => 'mypassword', </span> <span>'password_confirmation' => 'mypassword', </span> <span>'email' => 'mymail@gmail.com', </span> <span>'cardHolderName' => 'RAFIE Younes', </span> <span>'cardNumber' => '378282246310005', </span> <span>'billingAddress' => 'Narjiss B Fez Morocco', </span> <span>'cvc' => '850', </span> <span>'expirationMonth' => '01', </span> <span>'expirationYear' => '2016', </span> <span>], </span> <span>"Username must only contain alpha numeric characters and dashes." </span> <span>]; </span> <span>// ... </span> <span>return $inputs; </span> <span>} </span><span>}</span>
<span>class UserSubscriptionTest extends PHPUnit_Extensions_Selenium2TestCase </span><span>{ </span> <span>public function testFormSubmissionWithUsername() </span> <span>{ </span> <span>$this->byName('username')->value('younesrafie'); </span> <span>$this->byId('subscriptionForm')->submit(); </span> <span>} </span><span>}</span>
テストにFirefoxブラウザを使用しました。ただし、他のブラウザも使用することもできます。 Seleniumは、すべてのブラウザベンダーが独自のドライバーを提供することに取り組むドライバーアプローチを使用します。ドキュメントでサポートされているドライバーのリストを確認できます。
Chromeブラウザを有効にするには、Chromedriverをダウンロードし、Seleniumサーバーを起動するときにオプションとしてパスを指定する必要があります。
<span>composer require --dev phpunit/phpunit </span><span>composer require --dev phpunit/phpunit-selenium</span>
<span>alias sserve="java -jar /usr/local/bin/selenium-server-standalone-<version>.jar"</span>
ドキュメントの準備はできていますか?
コールバック関数は、非null値を返すまで待機し、エラーメッセージで2秒後にタイムアウトします。ルックアップ方法では要素を探し続けますが、検索間隔を指定する場合は、ImplicitWaitメソッドを使用できます。
<span>// tests/acceptance/UserSubscriptionTest.php </span> <span>class UserSubscriptionTest extends PHPUnit_Extensions_Selenium2TestCase </span><span>{ </span> <span>public function setUp() </span> <span>{ </span> <span>$this->setHost('localhost'); </span> <span>$this->setPort(4444); </span> <span>$this->setBrowserUrl('http://vaprobash.dev'); </span> <span>$this->setBrowser('firefox'); </span> <span>} </span><span>}</span>
この記事は、受け入れテストのためにSeleniumを使用してPhpunitを使用する簡単な紹介でした。一般に、ブラウザの自動化を必要とするものには、Seleniumを使用できます。コメントや質問がある場合は、以下にそれらを投稿してください。私はそれらに答えるために最善を尽くします。
<span>public function tearDown() </span><span>{ </span> <span>$this->stop(); </span><span>}</span>
さまざまなブラウザでSeleniumを使用してphpunitテストを実行するにはどうすればよいですか?
SELENIUMでPHPunitでフレームとIFRAMEを処理するにはどうすればよいですか? )WebDriverの方法。この方法では、コンテキストを別のフレームまたはiframeに切り替えることができます。フレーム内の要素との対話が完了したら、spitchto() - > defaultcontent()メソッドを使用してメインコンテンツに切り替えることができます。
cookieは、manage() - > getcookies()メソッドを使用してセレンとともにphpunitで処理できます。この方法は、すべてのCookieを配列として返します。 manage() - > addcookie()、manage() - > deletecookie()、およびmanage() - > deleteallcookies()メソッドを使用してCookieを操作することもできます。並行したセレン?
以上がPhpunitでセレンを使用しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。