최근에 상당히 복잡한 프로젝트에서 셀레늄 1 테스트를 많이 작성했습니다. 그들은 모두 PHP로 작성되었으며 셀렌 서버 1.0.7에서 부드럽게 실행됩니다.PHPUnit 테스트에서 Selenium Grid 2 사용하기
분명히 firefox 5 (및 오늘 발표 된 6)에서는 셀렌 서버 1.0.7이 더 이상 작동하지 않습니다. 시도했지만 서버가 빈 창이 열리고 있습니다.
이제 셀레늄 그리드에서 테스트를 실행하려고합니다. 나는 그리드 v1을 사용하여 허브와 두개의 원격 컨트롤 runnnig를 얻을 수 있었지만 이전 서버처럼 빈 윈도우를 열었다. 그래서 나는 그리드 v2로 업그레이드해야한다고 생각했다.
클라이언트가 허브에 연결될 수 있지만 허브에 대해 테스트를 실행하면 전혀 연결할 수없는 것 같습니다 ("PHPUnit_Framework_Exception : Selenium RC에 연결할 수 없습니다. 섬기는 사람"). 내가 셀렌 독립 실행 형 서버 2.4.0에 대해 그들을 실행 해봤하고 그 작동하는 것 같습니다.
포럼에서, 셀레늄 그리드 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에서 발생하는 것으로 보입니다. 문제가있는 것 같습니다. 내가 브라우저에서 http://localhost:4444/selenium-driver/driver을 요청하면
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 ERROR: 500
org.openqa.grid.internal.GridException: Session not available - []
RequestURI=/selenium-server/driver
어떤 생각이 어떻게이 문제를 해결하려면? 그 URL을 변경해야합니까? 또한
초기화 코드를 게시 할 수 있습니까? 예 : 설정을 수행하는 코드 ?? – Baz1nga