Selenium RC не закрывал окно браузера
#1
Отправлено 20 октября 2010 - 13:21
Подскажите пожалуйста, возможно ли, чтобы по окончании прохождения теста Selenium RC не закрывал окно браузера, которое открывает при запуске теста, т.е. чтобы не было Killing Firefox?
#2
Отправлено 20 октября 2010 - 16:52
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#3
Отправлено 21 октября 2010 - 10:06
Для этого нужно не ставить вызов selenium.stop метода. Возможно, если вы использовали selenium-овские расширения тестовых классов JUnit или аналогичных решений, то вам для таких классов желательно переопределить метод tearDown или аналогичный метод, который вызывается по окончании работы тестов. И в этом переопределенном методе уже ставить stop и при случае закомментировать.Доброго времени суток!
Подскажите пожалуйста, возможно ли, чтобы по окончании прохождения теста Selenium RC не закрывал окно браузера, которое открывает при запуске теста, т.е. чтобы не было Killing Firefox?
#4
Отправлено 21 октября 2010 - 12:26
protected function tearDown() { parent::tearDown(); //some functions die ('tear down!'); }
Просто добавте эту функцию в класс
class Example extends PHPUnit_Extensions_SeleniumTestCase { protected function setUp() { $this->setBrowser(BROWSER1); $this->setBrowserUrl(HOME); } public function test1() // ваш тест {} protected function tearDown() {} }
с die() это конечно грязный хак, если вы предложите что-то лучшее рад выслушать.
#5
Отправлено 22 октября 2010 - 09:29
/pear/PHPUnit/Extensions/SeleniumTestCase/Driver.php
В частности, там можно найти функцию
public function stop() { if (!isset($this->sessionId)) { return; } $this->doCommand('testComplete'); $this->sessionId = NULL; }
При вызове которой можно заметить что она посылает серверу команду 'testComplete', насколько я понимаю, и убивает sessionId.
Заккоментируйте
//$this->doCommand('testComplete'); //$this->sessionId = NULL;
И в этом случае если какой-то метод вернёт ошибку -
например, как вызывается
protected function doCommand($command, array $arguments = array())
protected function doCommand($command, array $arguments = array()) { ... if (!preg_match('/^OK/', $response)) { $this->stop(); throw new PHPUnit_Framework_Exception( sprintf( "Response from Selenium RC server for %s.\n%s.\n", $this->commands[count($this->commands)-1], $response ) ); }Упс, сервер не вернул ОК - вызываем функцию stop(); - а в ней НЕ произошло сброса. И команда завершить тест серверу послана не была.))
#6
Отправлено 24 октября 2010 - 11:02
Расскажу теперь как это делается в моём случае, т.е. Selenium+Ruby, вдруг кому-то пригодится
Необходимо закомментировать @selenium.close_current_browser_session, вот так:
def teardown
# @selenium.close_current_browser_session
assert_equal [], @verification_errors
end
#7
Отправлено 04 ноября 2010 - 14:23
В PHPUnit в классе PHPUnit_Extensions_SeleniumTestCase от которого наследуется тест есть функция
protected function onNotSuccessfulTest(Exception $e)
Просто просмотрев которую становится понятно что и как может сделать Selenium.
всего-то делов - переопределить её в классе тесов.
И не нужно лазить в Driver.
Мне стыдно за те посты которые писал до этого.
Мне кажется пока-что это неплохим решением...
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных