1

セレンのラッパーとしてphpunitを使用しています。同じ Web サイトで 2 人のユーザーをシミュレートするテストがあります。そのため、Cookie を共有できない 2 つのブラウザーを開く必要があります。2 つのウィンドウだけではいけません。これらは同じテストであるため、たとえば、ユーザーが最初のブラウザー インスタンスで何かをクリックし、別のユーザーが別のブラウザー インスタンスで変更を探します。ログアウトして別のユーザーとして再度ログインすることはできません。

これを行う方法はありますか?

4

1 に答える 1

1

免責事項: 私はこれをまったく試していませんが、パターンは機能する可能性があります。

残念ながら、PHPUnit WebDriver の実装は、単体テスト フレームワーク コードと密接に結合されています。ただし、2 つの異なる Web ドライバー インスタンスを並行して実行するには、次のような方法を試すことができます。

<?php
class WebTest extends PHPUnit_Extensions_Selenium2TestCase
{
    private $driver1;
    private $driver2;

    protected function setUp()
    {
        $this->driver1 = $this->createDriver();

        $this->driver2 = $this->createDriver();
    }

    protected function createDriver()
    {
        $driver = new PHPUnit_Extensions_Selenium2TestCase();
        $driver->setBrowser('firefox');
        $driver->setBrowserUrl('http://www.example.com/');
        $driver->start();

        return $driver;
    }

    public function testTitle()
    {
        $this->driver1->url('http://www.example.com/');
        $this->driver1->assertEquals('Example WWW Page', $this->title());

        $this->driver2->url('http://www.example.com/');
        $this->driver2->assertEquals('Example WWW Page', $this->title());
    }

    protected function tearDown() {
        $this->driver1->stop();
        $this->driver2->stop();
    }
}
?>

これでうまくいかない可能性があることはかなりありますが、試してみることができます。

または、この特定のテスト/テストの PHPUnit 統合を破棄し、 PHP-SeleniumClientなどの専用の PHP WebDriver API を使用して、WebDriver インスタンスをより適切に制御することもできます。

于 2013-11-08T19:10:23.590 に答える