[solved] Silenium не получает тип браузера

Различные вопросы по установке и настройке фреймворка, конфигурции веб-сервера и IDE.
lemb
Сообщения: 25
Зарегистрирован: 2012.03.08, 17:51
Контактная информация:

[solved] Silenium не получает тип браузера

Сообщение lemb »

Ну вот первый пост - и сразу о проблемах...

Решил изучать Yii (давно приглядывался, вот решил проверить в деле), но кроме этого захотелось организовать процесс разработки "по фэн-шую": перейти на *nix (ведь на сервере тоже *nix), и во вторых плотно заняться тестированием. С первым проблем никаких нет - не первый год работаю в *nix'ах (правда в роли сис.админа), а вот со вторым засада.

Постараюсь в кратце объяснить в чем проблема:
Имеем:
  • Ubuntu 12.04
  • PHP 5.3.10
  • PHPUnit 3.6.10
  • selenium-server-standalone-2.20.0
  • Yii 1.1.10.r3566
phpunit.xml => http://pastebin.com/yWqyWyrD

WebTestCase.php => константа TEST_BASE_URL заданна верно

После генерации стандартного проекта пробую запустить PHPUnit и в консоли силениума получаю тонну ошибок
Что-бы вы не ломали себе глаза в логе отмечу самое интересное:

Код: Выделить всё

17:24:18.670 INFO - Command request: getNewBrowserSession[, http://tourcms.loc/index-test.php/] on session null
17:24:18.679 INFO - creating new remote session
17:24:18.696 INFO - Got result: Failed to start new browser session: Browser not supported:
(Did you forget to add a *?)
Если присмотреться то видно что тип браузера не передается методу getNewBrowserSession...
На всякий, полный лог => http://pastebin.com/mmBv3jMP

Если запустить сервер силениума с параметром -interactive и в ручную отправить запрос (cmd=getNewBrowserSession&1=*iexplore&2=http://www.google.com
)(банально открытие страницы корпорации добра), то все успешно работает.

Прошу помощи у сообщества в решении этой проблемы, уж очень хочу перевести работу на новый уровень.

----------------------------------------------------------------

Решение проблемы нашлось
Stamm писал(а):Воспроизвёл баг у себя. Всё дело в последней версии PHPUnit_Selenium

Код: Выделить всё

sudo pear uninstall phpunit/PHPUnit_Selenium
sudo pear install phpunit/PHPUnit_Selenium-1.2.3
При использовании PHP 5.4
DexterHD писал(а):Помогло обновление версии PHPUnit_Selenium до 1.2.5

Код: Выделить всё

sudo pear upgrade phpunit/PHPUnit_Selenium
Последний раз редактировалось lemb 2012.03.19, 19:47, всего редактировалось 4 раза.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Silenium не получает тип браузера

Сообщение samdark »

Можно попробовать указать полный путь к хрому.
lemb
Сообщения: 25
Зарегистрирован: 2012.03.08, 17:51
Контактная информация:

Re: Silenium не получает тип браузера

Сообщение lemb »

Sam Dark писал(а):Можно попробовать указать полный путь к хрому.
Пробовал изменить <browser name="googlechrome" browser="*googlechrome" />
на <browser name="googlechrome" browser="*googlechrome /usr/bin/google-chrome" />

Но результат не меняется - в логе силениума видно что тип браузера не приходит совсем. (getNewBrowserSession[, http://tourcms.loc/index-test.php/])
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Silenium не получает тип браузера

Сообщение samdark »

Кстати, по-моему там был *chrome, а не *googlechrome…
lemb
Сообщения: 25
Зарегистрирован: 2012.03.08, 17:51
Контактная информация:

Re: Silenium не получает тип браузера

Сообщение lemb »

Sam Dark писал(а):Кстати, по-моему там был *chrome, а неgooglechrome…
Перепробовал множество вариантов:
  • *googlechrome
  • *googlechrome /usr/bin/google-chrome
  • *googlechrome /usr/bin/chromium-browser
  • *chrome
  • *chrome /usr/bin/google-chrome
  • *chrome /usr/bin/chromium-browser
Сейчас буду пробовать заново поставить PHPUnit и Silenium может где-то при установке накосячил.

И еще просьба, может есть в сети где-то толковый мануал как корректно установить PHPUnit и Silenium, что-бы можно было проверить свои действия?

P.S. в интерактивном моде силениума прописывал именно *googlechrome - все работало
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Silenium не получает тип браузера

Сообщение samdark »

Селениум просто слить да запустить jar-ник. phpunit ставится как написано вот тут: https://github.com/sebastianbergmann/ph ... E.markdown
lemb
Сообщения: 25
Зарегистрирован: 2012.03.08, 17:51
Контактная информация:

Re: Silenium не получает тип браузера

Сообщение lemb »

Sam Dark писал(а):Селениум просто слить да запустить jar-ник. phpunit ставится как написано вот тут: https://github.com/sebastianbergmann/ph ... E.markdown
странно но если просто установить через

Код: Выделить всё

pear config-set auto_discover 1
pear install pear.phpunit.de/PHPUnit
то при запуске тестов получаю:

Код: Выделить всё

PHP Warning:  require_once(PHPUnit/Extensions/SeleniumTestCase.php): failed to open stream: No such file or directory in /var/www/tourcms.loc/framework/test/CWebTestCase.php on line 11
Предидущий раз стваил через какие-то танцы с бубном:

Код: Выделить всё

pear upgrade pear
pear channel-discover pear.phpunit.de
pear channel-discover components.ez.no
pear channel-discover pear.symfony-project.com
pear install --alldeps phpunit/PHPUnit
Список всего что сейчас установлено в pear:

Код: Выделить всё

sudo pear list -a
Installed packages, channel __uri:
==================================
(no packages installed)

Installed packages, channel components.ez.no:
=============================================
(no packages installed)

Installed packages, channel doc.php.net:
========================================
(no packages installed)

Installed packages, channel pear.php.net:
=========================================
Package          Version State
Archive_Tar      1.3.9   stable
Console_Getopt   1.3.1   stable
PEAR             1.9.4   stable
Structures_Graph 1.0.4   stable
XML_Util         1.2.1   stable

Installed packages, channel pear.phpunit.de:
============================================
Package            Version State
File_Iterator      1.3.1   stable
PHPUnit            3.6.10  stable
PHPUnit_MockObject 1.1.1   stable
PHP_CodeCoverage   1.1.2   stable
PHP_Invoker        1.1.0   stable
PHP_Timer          1.0.2   stable
PHP_TokenStream    1.1.3   stable
Text_Template      1.1.1   stable

Installed packages, channel pear.symfony-project.com:
=====================================================
Package Version State
YAML    1.0.6   stable

Installed packages, channel pecl.php.net:
=========================================
(no packages installed)
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Silenium не получает тип браузера

Сообщение samdark »

А сам PEAR свежий или из какого-нибудь XAMPP?
lemb
Сообщения: 25
Зарегистрирован: 2012.03.08, 17:51
Контактная информация:

Re: Silenium не получает тип браузера

Сообщение lemb »

Sam Dark писал(а):А сам PEAR свежий или из какого-нибудь XAMPP?
Устанавливал из репозитория Ubuntu
pear.php.net/PEAR-1.9.4
lemb
Сообщения: 25
Зарегистрирован: 2012.03.08, 17:51
Контактная информация:

Re: Silenium не получает тип браузера

Сообщение lemb »

Так и не смог нормально разобраться в чем причина. Одно понял точно Yii тут не при делах, проблема в самом PHPUnit (или с версией что-то не то, или все-таки я что-то упустил при установке).
Однозначно одно PHPUnit корректно получает и парсит файл phpunit.xml, так как в PHPUnit/TextUI/Command.php

Код: Выделить всё

PHPUnit_Extensions_SeleniumTestCase::$browsers = $browsers; 
$browsers - заполнен корректными данными.
Но если посмотреть дальше то при вызове метода start() класса PHPUnit_Extensions_SeleniumTestCase_Driver данные о браузере пусты...

Если подвести итог: не осилил я разобраться в чем косяк, но нашел вполне рабочий "обходной метод" запускать с силениум с жесткой привязкой к одному браузеру.

Код: Выделить всё

java -jar selenium-server-standalone-2.20.0.jar -forcedBrowserMode "*googlechrome"
костыль работает - но имеет недостатки:
  • Работает только с одним браузером (мне пока достаточно)
  • Это костыль...
Но, попрошу сообщество: если у кого-то есть информация по сабжу подскажите где косяк, или гайд какой-то (судя по официальным они не совсем корректны, по крайней мере на Ubuntu 11.10 и 12.04)

P.S. для того что-бы тестировать в Google Chrome(Chromium) необходимо сделать символическую ссылку

Код: Выделить всё

ln -s `which chromium-browser` /usr/bin/google-chrome
Аватара пользователя
Stamm
Сообщения: 407
Зарегистрирован: 2010.03.14, 18:59
Откуда: Россия, Москва
Контактная информация:

Re: Silenium не получает тип браузера

Сообщение Stamm »

Сейчас специально запустил под ubuntu 11.04 - всё пашет
PHPUnit 3.5.15
selenium-server-standalone-2.20.0.jar
Chromium 17.0.963.78 (Developer Build 125577 Linux) Ubuntu 11.04


phpunit.xml:

Код: Выделить всё

<selenium>
        <browser name="Chromium" browser="*googlechrome /usr/bin/chromium-browser" />
</selenium>
 
lemb
Сообщения: 25
Зарегистрирован: 2012.03.08, 17:51
Контактная информация:

Re: Silenium не получает тип браузера

Сообщение lemb »

Stamm писал(а):Сейчас специально запустил под ubuntu 11.04 - всё пашет
а PHPUnit как устанавливали:

Код: Выделить всё

pear upgrade pear
pear channel-discover pear.phpunit.de
pear channel-discover components.ez.no
pear channel-discover pear.symfony-project.com
pear install --alldeps phpunit/PHPUnit
или

Код: Выделить всё

pear config-set auto_discover 1
pear install pear.phpunit.de/PHPUnit
Со вторым вариантом у меня тесты вообще не запускались, не хватало PHPUnit_Selenium
Аватара пользователя
Stamm
Сообщения: 407
Зарегистрирован: 2010.03.14, 18:59
Откуда: Россия, Москва
Контактная информация:

Re: Silenium не получает тип браузера

Сообщение Stamm »

Phpunit ставил из репозитория, selenium ставил по первому способу, но эти репозитории pear точно не ставил:

Код: Выделить всё

pear channel-discover components.ez.no
pear channel-discover pear.symfony-project.com
Остальное делал.

Поставьте ещё selenium отдельно: pear install phpunit/PHPUnit_Selenium

У меня стоял phpunit из репозитория, сейчас обновил через pear до версии 3.6.10 - всё работает.
lemb
Сообщения: 25
Зарегистрирован: 2012.03.08, 17:51
Контактная информация:

Re: Silenium не получает тип браузера

Сообщение lemb »

Сегодня попробовал пройти всю процедуру установки заново.
Установил Ubuntu 11.10 desktop i386

Далее по стандарту обновляемся и устанавливаем необходимое для работы (пробую поставить phpunit из репозитория убунты)

Код: Выделить всё

sudo apt-get update; sudo apt-get dist-upgrade; sudo reboot
sudo apt-get install apache2 mysql-client mysql-server php5 php5-curl php5-gd php5-memcache php5-mysql php5-xdebug php-pear phpunit chromium-browser
Скачиваю JDK с оффсайта (открытую версию не использую так как у нее проблемы с потреблением памяти и быстродействием, тем более разработчики PHPStorm в котором работаю ее не рекомендуют), и сервер силениума

Код: Выделить всё

cd
sudo mkdir -p  /usr/lib/jvm/;sudo mv jdk1.7.0/ /usr/lib/jvm/
sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt-get update; sudo apt-get install update-java; sudo update-java
wget http://selenium.googlecode.com/files/selenium-server-standalone-2.20.0.jar
Следующий шаг: установка PHPUnit_Selenium

Код: Выделить всё

sudo pear upgrade pear
sudo pear channel-discover pear.phpunit.de
sudo pear install phpunit/PHPUnit_Selenium
yii webapp и запускаем phpunit

Код: Выделить всё

cd /var/www/framework/
./yiic webapp ../testdrive
cd ../testdrive/protected/tests/
phpunit functional/SiteTest.php
получаем:

Код: Выделить всё

PHP Fatal error:  Call to undefined method PHP_CodeCoverage_Filter::getInstance() in /usr/bin/phpunit on line 39
PHP Stack trace:
PHP   1. {main}() /usr/bin/phpunit:0
смотрим в этот самый /usr/bin/phpunit на ругающуюся строчку:

Код: Выделить всё

require_once 'PHP/CodeCoverage/Filter.php';
PHP_CodeCoverage_Filter::getInstance()->addFileToBlacklist(__FILE__, 'PHPUNIT');
 

Код: Выделить всё

php -i | grep include_path
include_path => .:/usr/share/php:/usr/share/pear => .:/usr/share/php:/usr/share/pear
Финал... /usr/share/php/PHP/CodeCoverage/Filter.php нет метода getInstance()

и где я косячу, можете подсказать?

PS читал где-то что убунтовский пакет phpunit как-то не правильно собран... но вот как у вас все это работает увы понять не могу.
Аватара пользователя
Stamm
Сообщения: 407
Зарегистрирован: 2010.03.14, 18:59
Откуда: Россия, Москва
Контактная информация:

Re: Silenium не получает тип браузера

Сообщение Stamm »

хм, странно. Попробуйте обновить phpunit и CodeCoverage через pear
lemb
Сообщения: 25
Зарегистрирован: 2012.03.08, 17:51
Контактная информация:

Re: Silenium не получает тип браузера

Сообщение lemb »

Stamm писал(а):хм, странно. Попробуйте обновить phpunit и CodeCoverage через pear
Собственно говоря, этим сейчас и занимался, точнее удалил phpunit (из реплзитория убунты)

Код: Выделить всё

sudo pear install --alldeps phpunit/PHPUnit
Получил сообщение что установка не возможна т.к. не хватает пакета YAML из репозитория pear.symfony-project.com

Код: Выделить всё

sudo pear channel-discover pear.symfony-project.com
sudo pear install --alldeps phpunit/PHPUnit
теперь при запуске теста получаем ошибку что phpunit не может найти дополнение PHPUnit_Selenium

Код: Выделить всё

sudo pear install --alldeps phpunit/PHPUnit_Selenium
запускаем тест - и имеем тоже самое что и в первом посте - серверу силениума не приходит название браузера...
lemb
Сообщения: 25
Зарегистрирован: 2012.03.08, 17:51
Контактная информация:

Re: Silenium не получает тип браузера

Сообщение lemb »

тут в блоге Sebastian Bergmann'а нашел пост http://sebastian-bergmann.de/archives/8 ... -Woes.html
В посте описывается ошибка при обновлении phpunit при которой (на сколько позволило мое знание забугорного языка и беглого просмотра) идет не правильный порядок обновления.
The new dependencies of the PHPUnit package, such as PHPUnit_MockObject for instance, are installed first. The PHPUnit package itself is installed last. And herein lies the problem: PHPUnit_MockObject installs the new version of MockObject/Generator.php before the PHPUnit package is upgraded. This upgrade deletes the MockObject/Generator.php file as it previously belonged to the PHPUnit package
может он быть как-то связан с моей проблемой?

----------------------------------------
Попробовал установить с ключом -f пакеты (как сказано в статье) - результат не поменялся (вместо браузера пустое место).
Аватара пользователя
Stamm
Сообщения: 407
Зарегистрирован: 2010.03.14, 18:59
Откуда: Россия, Москва
Контактная информация:

Re: Silenium не получает тип браузера

Сообщение Stamm »

Воспроизвёл баг у себя. Всё дело в последней версии PHPUnit_Selenium

Код: Выделить всё

sudo pear uninstall phpunit/PHPUnit_Selenium
sudo pear install phpunit/PHPUnit_Selenium-1.2.3
lemb
Сообщения: 25
Зарегистрирован: 2012.03.08, 17:51
Контактная информация:

Re: Silenium не получает тип браузера

Сообщение lemb »

Stamm писал(а):Воспроизвёл баг у себя. Всё дело в последней версии PHPUnit_Selenium

Код: Выделить всё

sudo pear uninstall phpunit/PHPUnit_Selenium
sudo pear install phpunit/PHPUnit_Selenium-1.2.3
Огромное спасибо!
Аватара пользователя
DexterHD
Сообщения: 1
Зарегистрирован: 2012.03.19, 17:45
Откуда: Norilsk, Russia
Контактная информация:

Re: [solved] Silenium не получает тип браузера

Сообщение DexterHD »

Доброго времени суток уважаемые. Сегодня столкнулся с такой же проблемой. Селениум работал работал, но
после переустановки php на версию 5.4  работать отказался с такой же ошибкой.

Помогло обновление версии PHPUnit_Selenium до 1.2.5

Код: Выделить всё

sudo pear upgrade phpunit/PHPUnit_Selenium
Ответить