Недавно я написал много тестов на селен 1 для довольно сложного проекта. Все они написаны на php и без проблем работают на selenium-сервере 1.0.7.
Очевидно, что с firefox 5 (и 6, выпущенными сегодня) selenium server 1.0.7 больше не работает. Я пробовал, но сервер просто открывает пустые окна.
Теперь я пытаюсь запустить эти тесты на селеновой сетке. Мне удалось получить концентратор и пару пультов дистанционного управления runnnig с использованием grid v1, но они открывают только пустые окна, как и старый сервер. Итак, я решил, что мне нужно перейти на grid v2.
По какой-то причине я могу подключить клиентов к хабу, но если я попробую запустить свои тесты на хабе, он вообще не сможет подключиться («PHPUnit_Framework_Exception: не удалось подключиться к серверу Selenium RC»). Я попытался запустить их на автономном сервере Selenium 2.4.0, и, похоже, это сработало.
Я читал на форуме, что selenium grid 2 просто не работает с phpunit (пока?).
Как я могу запустить мои тесты в сетке? Что не хватает phpunit для подключения к серверу? Я ценю любую помощь!
Настроил хаб следующим образом:
java -jar selenium-server-standalone-2.4.0.jar -role hub
И два раба:
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).
Итак, вот вся инициализация, которую я выполняю в коде:
<?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 / Extentions / 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?