1

私は最近、かなり複雑なプロジェクトのために多くのセレン1テストを作成しました。これらはすべてphpで記述されており、selenium-server1.0.7でスムーズに実行されます。

明らかに、Firefox 5(および本日リリースされた6)では、Seleniumサーバー1.0.7は機能しなくなりました。試しましたが、サーバーが空白のウィンドウを開いているだけです。

今、私はそれらのテストをセレングリッドで実行しようとしています。グリッドv1を使用してハブといくつかのリモコンを実行することができましたが、古いサーバーと同じように空白のウィンドウしか開きません。だから私はグリッドv2にアップグレードする必要があると思いました。

何らかの理由でクライアントをハブに接続できますが、ハブに対してテストを実行しようとすると、まったく接続できないようです( "PHPUnit_Framework_Exception:Selenium RCサーバーに接続できませんでした")。セレンスタンドアロンサーバー2.4.0に対してそれらを実行してみましたが、それは機能しているようです。

フォーラムで読んだところによると、セレングリッド2はphpunitでは機能しません(まだ?)。

グリッド上でテストを実行するにはどうすればよいですか?phpunitがサーバーに接続するために欠けているものは何ですか?助けてくれてありがとう!

ハブを次のように設定しました。

java -jar selenium-server-standalone-2.4.0.jar -role hub

そして2人の奴隷:

java -jar selenium-server-standalone-2.4.0.jar -role rc -hub http://127.0.0.1:4444/grid/register -port 5555
java -jar selenium-server-standalone-2.4.0.jar -role webdriver -hub http://127.0.0.1:4444/grid/register -port 5556

グリッドコンソール(http:// localhost:4444 / grid / console)に2つのノードがあるので、ここまですべてが機能しているようです。

これが私がコードで行っているすべての初期化です:

<?php

require_once 'PHPUnit/Extensions/SeleniumTestCase.php';

class Grid_Test extends PHPUnit_Extensions_SeleniumTestCase
{
    public $captureScreenshotOnFailure = false;

    public static $browsers = array(
        'FFLinux' => array(
            'name'      => 'Firefox on Linux',
            'browser'   => '*firefox',
            'host'      => '127.0.0.1',
            'port'      => 4444,
            'timeout'   => 30000
        ));

    public function setUp()
    {
        $this->setBrowserUrl('http://www.google.com');
    }

    public function testGridWorking()
    {

        $this->open('/');
        $this->assertTrue(false);
    }
}

このコードは、スタンドアロンサーバー2.4.0でも機能します。予想通り、最終行で失敗します。

例外はPHPUnit/Extensions / SeleniumTestCase/Driver.phpでスローされるようです。問題があるようです。

protected function doCommand($command, array $arguments = array())
{
    $url = sprintf(
      'http://%s:%s/selenium-server/driver/?cmd=%s',
      $this->host,
      $this->port,
      urlencode($command)
    );

    [...]

    $handle = @fopen($url, 'r', FALSE, $context);
    if (!$handle) {
        throw new PHPUnit_Framework_Exception(
            'Could not connect to the Selenium RC server.'
        );
    }
    [...]
}

ブラウザでhttp:// localhost:4444 / selenium-driver / driverをリクエストすると、次のようになります。

    HTTP ERROR: 500
    org.openqa.grid.internal.GridException: Session not available - []
    RequestURI=/selenium-server/driver

これを修正する方法はありますか?そのURLを変更する必要がありますか?

4

2 に答える 2

0

また、グリッドが正しく設定されていることを確認してください。これは、グリッドがどのように行われるかを示す小さな投稿です:http: //opensourcetester.co.uk/2011/07/06/selenium-grid-2/

ところで、ドライバーのインスタンス化を行うコードが表示されません。何かが足りませんか?

これがどのように行われるかです:

require_once "phpwebdriver/WebDriver.php";
require("phpwebdriver/LocatorStrategy.php");

$webdriver = new WebDriver("localhost", "4444");
$webdriver->connect("firefox");                            
$webdriver->get("http://google.com");
$element = $webdriver->findElementBy(LocatorStrategy::name, "q");
$element->sendKeys(array("selenium google code" ) );
$element->submit();

$webdriver->close();

詳細:http ://code.google.com/p/php-webdriver-bindings/

于 2011-08-16T11:04:22.937 に答える
0

Selenium Grid 2でPHPUnitを使用しようとする際の問題は、プロジェクトの所有者にすでに報告されています。ここで入手できるパッチを見て、それが機能するかどうかを確認してください。

とにかく、もし私があなたなら、 php-webdriverのようなPHPで利用可能なドライバーの1つを介してWebDriverに移行することを考え始めます。

于 2011-12-17T15:26:33.097 に答える