Перейти к содержимому

Фотография

Selenium RC не закрывал окно браузера


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 6

#1 antorcha

antorcha

    Новый участник

  • Members
  • Pip
  • 6 сообщений
  • ФИО:Florko Elena
  • Город:Odessa

Отправлено 20 октября 2010 - 13:21

Доброго времени суток!

Подскажите пожалуйста, возможно ли, чтобы по окончании прохождения теста Selenium RC не закрывал окно браузера, которое открывает при запуске теста, т.е. чтобы не было Killing Firefox?
  • 0

#2 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 20 октября 2010 - 16:52

Модерирование: тема перенесена в специализированный форум, посвященный инструменту Selenium
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#3 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 21 октября 2010 - 10:06

Доброго времени суток!

Подскажите пожалуйста, возможно ли, чтобы по окончании прохождения теста Selenium RC не закрывал окно браузера, которое открывает при запуске теста, т.е. чтобы не было Killing Firefox?

Для этого нужно не ставить вызов selenium.stop метода. Возможно, если вы использовали selenium-овские расширения тестовых классов JUnit или аналогичных решений, то вам для таких классов желательно переопределить метод tearDown или аналогичный метод, который вызывается по окончании работы тестов. И в этом переопределенном методе уже ставить stop и при случае закомментировать.
  • 0

#4 frei_by

frei_by

    Постоянный участник

  • Members
  • PipPipPip
  • 177 сообщений
  • ФИО:Дмитрий

Отправлено 21 октября 2010 - 12:26

для phpUnit это может выглядеть например так:

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() это конечно грязный хак, если вы предложите что-то лучшее рад выслушать.
  • 0

#5 frei_by

frei_by

    Постоянный участник

  • Members
  • PipPipPip
  • 177 сообщений
  • ФИО:Дмитрий

Отправлено 22 октября 2010 - 09:29

Продолжая тему грязных хаков, а также особенностей общения с RC сервером, Очень интересные функции можно посмотреть в файле driver.php который для PHPUnit находится в папке
/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(); - а в ней НЕ произошло сброса. И команда завершить тест серверу послана не была.))
  • 0

#6 antorcha

antorcha

    Новый участник

  • Members
  • Pip
  • 6 сообщений
  • ФИО:Florko Elena
  • Город:Odessa

Отправлено 24 октября 2010 - 11:02

Всем спасибо за ответы!
Расскажу теперь как это делается в моём случае, т.е. Selenium+Ruby, вдруг кому-то пригодится
Необходимо закомментировать @selenium.close_current_browser_session, вот так:

def teardown
# @selenium.close_current_browser_session
assert_equal [], @verification_errors
end
  • 0

#7 frei_by

frei_by

    Постоянный участник

  • Members
  • PipPipPip
  • 177 сообщений
  • ФИО:Дмитрий

Отправлено 04 ноября 2010 - 14:23

Как приятно читать доки по инструменту которым пользуешся. Я бы даже сказал выкинь бубен, и сделай как положено.
В PHPUnit в классе PHPUnit_Extensions_SeleniumTestCase от которого наследуется тест есть функция
protected function onNotSuccessfulTest(Exception $e)

Просто просмотрев которую становится понятно что и как может сделать Selenium.

всего-то делов - переопределить её в классе тесов.
И не нужно лазить в Driver.
Мне стыдно за те посты которые писал до этого.

Мне кажется пока-что это неплохим решением...
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных