39

PHPunitでSelenium2を使用する方法を知っている人はいますか?PHPにSelenium2のサンプルはありますか?

4

11 に答える 11

19

クイックアップデート: 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サポートではありませんが、非常に堅牢なアプローチです。

于 2011-10-04T10:14:39.367 に答える
8

http://code.google.com/p/php-webdriver-bindings/をご覧ください。これは、JsonWireProtocolを使用してSeleniumWebdriverサーバーと通信するPHPライブラリです。これは初期バージョンですが、機能します。

于 2011-04-15T11:35:31.837 に答える
5

現在(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などの別のツールは必要ありません)。

プロジェクトのホームページに記載されている他のテストフレームワーク統合オプションもあります。

于 2016-08-04T15:22:50.570 に答える
3

PHPUnit Selenium統合コードはgithub内の別個のプロジェクトとして存在しますが、私が見る限り、Selenium 2をサポートしていないため、質問に対する答えは次のようになります-いいえ、PHPUnitでSelenium2を使用することはできません。

ただし、ソースツリーのクローンを作成して、Selenium2で機能させることができます。

于 2010-11-17T18:24:38.417 に答える
2

そのためのライブラリを作成しました。お役に立てば幸いです。JSON Wireプロトコルも使用しますが、他の言語の例と互換性を持たせることを目的としているため、構文は非常に似ています。リンクは次のとおりです:https ://github.com/Nearsoft/PHP-SeleniumClient

あなたがそれを好きなら、それを共有するか、それを改善するか、それをフォークしてください:)

よろしく、マーク。

于 2012-05-31T18:42:33.990 に答える
1

phpunitwebdriverバインディングはGoogleコードでホストされています。これを超えて理解する必要があることがあります。

  1. PHPUnitをインストールする必要があります。(PEARパッケージを使用するか、手動でダウンロードしてインストールします)
  2. EclipsePDTなどのPHPIDEをダウンロードしてインストールする必要があります。
  3. Selenium-WebDriver Seleniumテストの実行中は、スタンドアロンサーバーが実行されている必要があります
于 2011-08-10T10:05:22.263 に答える
1

FacebookラッパーのSelenium2の使用方法に関するチュートリアルを作成しました。ここで見つけてください:

http://testigniter.blogspot.co.uk/2012/01/running-selenium-2-webdriver-using.html

于 2012-08-22T14:38:02.043 に答える
1

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つのデモファイルがあり、ここにあります

于 2013-06-04T11:16:47.447 に答える
1

今日、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/

于 2013-10-09T19:31:31.957 に答える
0

はい、Selenium 2 (WebDriver)そしてPHPUnit tests簡単です。Selenium IDEしかし、私はあなたがで期待する必要があるのであなたが最初に試みるべきであるというアドバイスをあなたに与えたいと思いますselenium command。あなたがそうすることを期待してSelenium commandいるなら、selenium 2 (Webdriver)そしてPHPUnit testあなたにとってより簡単になるでしょう。

ここselenium IDEでチュートリアルを試すことができ、ここで 学ぶことができます。selenium 2 (Webdriver) and PHPUnit

于 2013-10-04T03:59:45.947 に答える
0

私はselenium2phpに取り組んでいます。SeleniumIDEで記録されたSelenium1のテストが多すぎます。これで、htmlテストがSelenium2に変換されます。実際、PHPUnit_Extensions_Selenium2TestCaseの場合。さらにコマンドを実装します。

于 2013-10-17T04:45:36.397 に答える