1

PHPUnit と Selenium でいくつかのテストを行っていますが、それらすべてを同じブラウザ ウィンドウで実行したいと考えています。

Selenium Serverを起動しようとしました

java -jar c:\php\selenium-server-standalone-2.33.0.jar -browserSessionReuse

しかし目に見える変化なし。

セットアップで shareSession() も試しました

public function setUp()
{
    $this->setHost('localhost');
    $this->setPort(4444);
    $this->setBrowser('firefox');
    $this->shareSession(true);
    $this->setBrowserUrl('http://localhost/project');
}

ただし、唯一の変更点は、すべてのテストでウィンドウを開き、実際にはセッションを共有しないことです。この時点でアイデアがありません。

私のテストは次のようになります。

public function testHasLoginForm()
{
    $this->url('');

    $email = $this->byName('email');
    $password = $this->byName('password');

    $this->assertEquals('', $email->value());
    $this->assertEquals('', $password->value());
}
4

3 に答える 3

2

フラグを使用する必要はありません -browserSessionReuse あなたのケースでは、すべてのテストの前に実行され、新しいインスタンスを開始するセットアップ関数。これは、これを防ぐために私がしたことです(少し醜いですが、WindowsとUbuntuの両方で機能します):

  1. static ver: $first でヘルパークラスを作成し、初期化しました。helper.php:

    <?php
    class helper
    {
        public static $first;
    }
    helper::$first = 0;
    ?>
    
  2. メイン テスト ファイルの setUp() 関数を編集します (そして、helper.php に require_once を追加します):

    require_once "helper.php";
    
    class mySeleniumTest extends PHPUnit_Extensions_SeleniumTestCase
    {
    
            public function setUp()
            {
                    $this->setHost('localhost');
                    $this->setPort(4444);
                    if (helper::$first == 0 )
                    {
                            $this->shareSession(TRUE);
                            $this->setBrowser('firefox');
                            $this->setBrowserUrl('http://localhost/project');
                            helper::$first = 1 ;
                    }
            }
    ....
    

各テストの後に値が再起動され(私にとっては...)、毎回設定する必要があるため(セレンサーバーがlocalhost:4444でない場合)、ifの外側のsetHostとsetPort

于 2013-06-16T12:10:30.633 に答える
0

先に進むための(はるかに)高速な方法を見つけました:1つの関数で複数のテストを実行すると、すべてのテストが同じウィンドウで実行されます。欠点は、テストとレポートがテストによって適切に提示されないことですが、速度は大幅に向上します!

各テストの同じ関数で、次を使用します。

$this->url('...');

または

$this->back();
于 2014-04-19T12:09:00.830 に答える