PHPunitでSelenium2を使用する方法を知っている人はいますか?PHPにSelenium2のサンプルはありますか?
11 に答える
クイックアップデート: phpunitはSelenium2をサポートするようになりました
執筆時点では、PHPUnitはSelenium2をサポートしていません。
Facebookのphp-webdriverを使用すると、完全なWebDriverAPIをPHPからエレガントな方法で呼び出すことができます。引用するには:
ほとんどのクライアントでは、最初にプロトコルを読んで何が可能かを確認してから、クライアント自体を調べてその呼び出し方法を確認する必要があります。これは、後者のステップを排除することを望んでいます。
これは、でインターフェースを提供するSelenium2サーバーを起動することによって使用されますlocalhost:4444/wd/hub
。
/usr/bin/java -jar /path/to/selenium-server-standalone-2.7.0.jar
次に、そのインターフェイスを呼び出すPHPテストコードを実行します。例えば:
<?php
require '/path/to/php-webdriver/__init__.php';
$webdriver = new WebDriver();
$session = $webdriver->session('opera', array());
$session->open("http://example.com");
$button = $session->element('id', 'my_button_id');
$button->click();
$session->close();
WebDriver APIはPHPメソッドにマップされており、例の呼び出しとドキュメントのelement / clickAPI呼び出しclick
を比較してください。element
その後、テストコードを通常のphpUnitテストでラップできます。
これはネイティブのphpUnitサポートではありませんが、非常に堅牢なアプローチです。
http://code.google.com/p/php-webdriver-bindings/をご覧ください。これは、JsonWireProtocolを使用してSeleniumWebdriverサーバーと通信するPHPライブラリです。これは初期バージョンですが、機能します。
現在(2017)php-webdriverを使用することをお勧めします。これは、SeleniumWebDriverと対話するための最も機能が完全なPHP言語バインディングであるAFAIKです。
このライブラリは2014年にSelenium2をサポートするように書き直され、そのAPIは主に公式のJavaWebDriverバインディングに基づいています。つまり、通常はPHPで簡単にたどることができるため、Javaで記述されたコード例を利用することもできます。また、最新のOOP方式で記述されており、標準のPSR-4名前空間とPSR-2コーディング標準に準拠しています。
このライブラリはphpunit-seleniumよりもお勧めします-元々はSelenium1用に設計されており(現在はSelenium 2をサポートしていますが)、そのAPIはPHPUnitに非常に緊密です。また、一部のWebDriver機能をサポートしておらず、upcominW3CWebDriver仕様で最新ではありません。
一方、Php-webdriverは独立したライブラリですが、PHPUnitとの統合は非常に簡単です。または、すべてのPHPUnit統合を含み、便利なレイヤーなどを提供するStewardなどの既存のツールを使用できます。複数のテストを並行して実行できるようにします(paratestなどの別のツールは必要ありません)。
プロジェクトのホームページに記載されている他のテストフレームワーク統合オプションもあります。
PHPUnit Selenium統合コードはgithub内の別個のプロジェクトとして存在しますが、私が見る限り、Selenium 2をサポートしていないため、質問に対する答えは次のようになります-いいえ、PHPUnitでSelenium2を使用することはできません。
ただし、ソースツリーのクローンを作成して、Selenium2で機能させることができます。
そのためのライブラリを作成しました。お役に立てば幸いです。JSON Wireプロトコルも使用しますが、他の言語の例と互換性を持たせることを目的としているため、構文は非常に似ています。リンクは次のとおりです:https ://github.com/Nearsoft/PHP-SeleniumClient
あなたがそれを好きなら、それを共有するか、それを改善するか、それをフォークしてください:)
よろしく、マーク。
phpunitwebdriverバインディングはGoogleコードでホストされています。これを超えて理解する必要があることがあります。
- PHPUnitをインストールする必要があります。(PEARパッケージを使用するか、手動でダウンロードしてインストールします)
- EclipsePDTなどのPHPIDEをダウンロードしてインストールする必要があります。
- Selenium-WebDriver Seleniumテストの実行中は、スタンドアロンサーバーが実行されている必要があります
FacebookラッパーのSelenium2の使用方法に関するチュートリアルを作成しました。ここで見つけてください:
http://testigniter.blogspot.co.uk/2012/01/running-selenium-2-webdriver-using.html
WebDriverを必要とするSelenium2フレームワークであるMentaの使用をお勧めします。どちらのパッケージもPSR-0と互換性があるため、Composerで使用できます。phpunit.xmlを使用してSeleniumを構成できます。ここに例があります
<phpunit bootstrap="tests/bootstrap.php"
backupGlobals="false" backupStaticAttributes="false"
strict="true" verbose="true">
<php>
<var name="testing.selenium.seleniumServerUrl" value="http://localhost:4444/wd/hub" />
<var name="testing.selenium.browser" value="firefox" />
<var name="testing.selenium.windowPosition" value="0,0" />
<var name="testing.selenium.windowSize" value="1280x1024" />
<var name="testing.selenium.windowFocus" value="1" />
<var name="testing.selenium.timeoutImplicitWait" value="10000" />
</php>
<testsuites>
<testsuite name="Integrationstests">
<directory suffix="Test.php" phpVersion="5.3.0" phpVersionOperator=">=">tests/integration</directory>
</testsuite>
</testsuites>
<logging>
<log type="junit" target="build/logs/junit.xml"/>
</logging>
</phpunit>
ブートストラップファイルはtesting.selenium。*から構成変数を読み取るため、新しい変数を簡単に設定できます。
<?php
\Menta_ConfigurationPhpUnitVars::addConfigurationFile(__DIR__ . '/../phpunit.xml');
$configuration = \Menta_ConfigurationPhpUnitVars::getInstance();
\Menta_SessionManager::init(
$configuration->getValue('testing.selenium.seleniumServerUrl'),
$configuration->getValue('testing.selenium.browser')
);
これで、テストケースを簡単に実装できます。ここに例があります
<?php
namespace tests\integration;
use WebDriver\LocatorStrategy;
class TestSearch extends \PHPUnit_Framework_TestCase
{
public function testGoogle()
{
$session = \Menta_SessionManager::getSession();
$session->open('http://www.google.de');
$element = $session->element(LocatorStrategy::NAME, 'q');
$this->assertTrue($element->displayed());
}
}
Mentaパッケージにも2つのデモファイルがあり、ここにあります
今日、aはSeleniumとphpunitに深く飛び込みました。それは可能であり、ここでいくつかの例と手順を見つけることができます:http: //phpunit.de/manual/current/en/selenium.html
phpunitの作成者は、APIのいくつかの素晴らしい例を入手しました。少し実験してエラーメッセージを読むことで、うまくいくでしょう。Havnは私自身も素晴らしいライブラリを見つけませんでした。
https://github.com/sebastianbergmann/phpunit-selenium/blob/master/Tests/Selenium2TestCaseTest.php
最後に、基本に沿って役立つfrom nettutsのチュートリアル:http: //net.tutsplus.com/tutorials/php/how-to-use-selenium-2-with-phpunit/
はい、Selenium 2 (WebDriver)
そしてPHPUnit tests
簡単です。Selenium IDE
しかし、私はあなたがで期待する必要があるのであなたが最初に試みるべきであるというアドバイスをあなたに与えたいと思いますselenium command
。あなたがそうすることを期待してSelenium command
いるなら、selenium 2 (Webdriver)
そしてPHPUnit test
あなたにとってより簡単になるでしょう。
ここselenium IDE
でチュートリアルを試すことができ、ここで 学ぶことができます。selenium 2 (Webdriver) and PHPUnit
私はselenium2phpに取り組んでいます。SeleniumIDEで記録されたSelenium1のテストが多すぎます。これで、htmlテストがSelenium2に変換されます。実際、PHPUnit_Extensions_Selenium2TestCaseの場合。さらにコマンドを実装します。