Учусь писать тесты. Сделал первый "Hello World":
<?php require_once 'Testing/Selenium.php'; require_once 'PHPUnit/Autoload.php'; class GoogleTest extends PHPUnit_Framework_TestCase { private $selenium; public function setUp() { $this->selenium = new Testing_Selenium("*googlechrome", "http://www.google.ru/"); $this->selenium->start(); } public function tearDown() { $this->selenium->stop(); } public function testGoogle() { $this->selenium->waitForPageToLoad(0); // на эту строчку коситься не надо, без нее тоже самое $this->selenium->open('/'); $this->selenium->type('q', "Hello world"); $this->selenium->click("btnG"); $this->selenium->waitForPageToLoad(1000); $this->assertRegExp("/Поиск в Google/", $this->selenium->getTitle()); } } ?>
Заметил, что между вызовами
$this->selenium->open('/');
$this->selenium->type('q', "Hello world");
$this->selenium->click("btnG");
крайне длинные паузы, вроде бы одинаковые, примерно по минуте.
Обсуждалось здесь: http://software-test...um/topic/19931/ , но итоги оттуда не извлечь.
Подскажите, пожалуйста, в чем проблема?
Спасибо.
Ответ: для тех кто установил Testing/Selenium версии 0.4.4 этот баг фиксится следующим образом:
из под рута правим файл /usr/share/php/Testing/Selenium.php (у меня он лежит здесь, у Вас путь может отличаться), в самом конце файла правим функцию doCommand:
protected function doCommand($verb, $args = array()) { $url = sprintf('http://%s:%s/selenium-server/driver/?cmd=%s', $this->host, $this->port, urlencode($verb)); for ($i = 0; $i < count($args); $i++) { $argNum = strval($i + 1); $url .= sprintf('&%s=%s', $argNum, urlencode(trim($args[$i]))); } if (isset($this->sessionId)) { $url .= sprintf('&%s=%s', 'sessionId', $this->sessionId); } if (!$handle = fopen($url, 'r')) { throw new Testing_Selenium_Exception('Cannot connected to Selenium RC Server'); } stream_set_blocking($handle, 1); // правим вот эту строку! Ставим НОЛЬ вместо 1 $response = stream_get_contents($handle); fclose($handle); if (!preg_match('/^OK/', $response)) { throw new Testing_Selenium_Exception('The Response of the Selenium RC is invalid: ' . $response); } return $response; }И все будет шикарно работать!