PhpunitでSelenium 2を使用する方法を知っている人はいますか? PHPにSelenium 2のサンプルはありますか?
クイックアップデート:phpunitがSelenium 2をサポートするようになりました
執筆時点では、PHPUnitはSelenium 2をサポートしていません。
php-webdriver from facebook 完全なWebDriver APIをPHPからエレガントな方法で呼び出すことができます。引用するには:
ほとんどのクライアントでは、まずプロトコルを読んで何が可能かを確認し、次にクライアント自体を調べてそれを呼び出す方法を確認する必要があります。これにより、後者のステップをなくすことができます。
localhost:4444/wd/hub
でインターフェースを提供するSelenium 2サーバーを起動することによって使用されます。
/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メソッドにマップされます。例のclick
でのelement
の呼び出しをelement/click API呼び出しと比較してください。ドキュメントで。
その後、テストコードを通常のphpUnitテストでラップできます。
これはネイティブのphpUnitサポートではありませんが、非常に堅牢なアプローチです。
http://code.google.com/p/php-webdriver-bindings/ をご覧ください。これはPHP JsonWireProtocolを使用してSelenium Webdriverサーバーと通信するライブラリです。これは初期のバージョンですが、動作します。
現在(2017) php-webdriver を使用することをお勧めします。AFAIKの最も機能が充実しているものPHP Selenium WebDriverと対話するための言語バインディング。
このライブラリは、Selenium 2をサポートするために2014年に書き直され、そのAPIは主に公式のJava WebDriverバインディングに基づいています。これは、Javaで記述されたコード例を利用できることを意味します。通常、PHPで単に従う必要があります。また、最新のOOP=方法で記述され、標準のPSR-4名前空間とPSR-2コーディング標準に従います。
phpunit-Selenium よりもこのライブラリをお勧めします。元々はSelenium 1用に設計されていたため(現在はSelenium 2をサポートしています)、そのAPIはPHPUnitに強く対応しています。また、一部のWebDriver機能をサポートしておらず、upcomin W3C WebDriver仕様 でも最新ではありません。
Php-webdriverは一方では独立したライブラリですが、そのPHPUnitとの統合は非常に簡単です-または Stewardのような既存のツールを使用できます 、これにはすべてのPHPUnit統合が含まれ、ニースの便利なレイヤーなども提供します。単純に複数のテストを並行して実行できるようにします( paratest などの別のツールは必要ありません)。
プロジェクトのホームページ で言及されている他のテストフレームワーク統合オプションもあります。
PHPUnit Selenium統合コードは、別のプロジェクトとして github にありますが、Selenium 2をサポートしていないことがわかるので、質問の答えは-いいえ、Selenium 2をPHPUnit。
しかし、ソースツリーを複製してSelenium 2で動作させることができます。
そのためのライブラリを作成しました。また、JSONワイヤープロトコルを使用しますが、他の言語の例と互換性を持たせることを目的としたため、構文は非常に似ています。これがリンクです: https://github.com/Nearsoft/PHP-SeleniumClient
気に入ったら、共有、改善、フォークしてください:)
よろしく、マーク。
phpunit webdriverバインディングは、Googleコードでホストされています。これ以外にも理解する必要があることがあります。
私は、Selenium 2、Facebookラッパーの使用方法についてのチュートリアルを書きました。
http://testigniter.blogspot.co.uk/2012/01/running-Selenium-2-webdriver-using.html
今日、Seleniumとphpunitに深く飛び込みました。それは可能であり、ここにいくつかの例と指示があります: http://phpunit.de/manual/current/en/Selenium.html
Phpunitの作成者は、APIのいくつかの素晴らしい例を得ました。少し実験してエラーメッセージを読むことで、問題は解決します。私自身も素晴らしいライブラリを見つけられませんでした。
https://github.com/sebastianbergmann/phpunit-Selenium/blob/master/Tests/Selenium2TestCaseTest.php
最後に、基本に沿って役立つnettutsからのチュートリアル: http://net.tutsplus.com/tutorials/php/how-to-use-Selenium-2-with-phpunit/
Menta 、 WebDriver を必要とするSelenium 2 Frameworkの使用をお勧めします。どちらのパッケージも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>
bootstrapファイルは、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パッケージには here にある2つのデモファイルもあります。
私は Selenium2php に取り組んでいます。 Selenium IDEで記録したSelenium1のテストが多すぎます。 htmlテストをSelenium2に変換します。実際、PHPUnit_Extensions_Selenium2TestCaseの場合。私はより多くのコマンドを実装するつもりです。