Selenium RC server (PHP)
#1
Отправлено 14 октября 2010 - 08:23
Подскажите где посмотерть либо приведиет пример запросов для сервера. Хочу попробовать используюя PHP общатся с сервером напрямую. Мне как-то это будет проще возможно, потому что HTTP, мне кажется, знаю лучше, чем структуру классов классов наследников классов....
#2
Отправлено 14 октября 2010 - 12:02
#3
Отправлено 14 октября 2010 - 12:51
Если быть точным, то Testing_Selenium. Но в целом мысль верна. PHPUnit - это просто движок, а Selenium-клиент - это просто библиотека, содержащая набор методов для взаимодействия с веб-страницей.Рекомендую не заниматься ерундой, а разобраться с одним единственным классом, скорее всего в PHP-драйвере он зовётся так же как и в Java - DefaultSelenium. Класс этот - проще не придумаешь.
Просто осталось разделить обязанности и куча проблем решается.
З.Ы.: Хотя непонятно, откуда там лес классов. Там всего-то класс теста и класс Селениума.
#4
Отправлено 14 октября 2010 - 13:47
require_once 'PHPUnit/Extensions/SeleniumTestCase.php'; class Example extends PHPUnit_Extensions_SeleniumTestCase { protected function setUp() public function test_comps() }
А с утра мне захотелось написать что-то вроде
$myvar = new Example;
$myvar -> setUp();
$myvar -> test_comps();
при попытке такого обращения выдало ошибку что сессия не начата.
Fatal error: Uncaught exception 'PHPUnit_Framework_Exception' with message 'Could not find class
получается что Example наследует от PHPUnit_Extensions_SeleniumTestCase
PHPUnit_Extensions_SeleniumTestCase наследует от PHPUnit_Framework_TestCase
а в PHPUnit_Framework_TestCase происходят реально чудеса, вроде тех, что в файле
File/Iterator/Factory.php и Iterator.php
т.е. парсятся назавания функций
test_comps()
и если они не начинаются со слова test то не выполняются.
мне пока-что (а собственно начал что-то осознанно писать для selenium на php только вчера) - скорее просто непривычно писать таким образом. Внутри класса.
До этого долгое время общался с Jmeter, поэтому испытываю дискомфорт от того что не вижу, каким образом и какие данные отпрваляются серверу.
Одна из первых задач перед мной посавленных - сделать на selenium автоматического паука который проходит по сайту и снимает массу скриншотов со страниц. У меня. Делается это для дизайнеров чтобы им не нужно было тыкать по ссылкам а просто запустить скрипт и посмотреть на результаты.
Я вот думаю организовать в локалке на своём хосте сервер, чтобы дизайнер мог подключится к нему, задать адрес и параметры сайта - а в ответ получить архив скриншотов... Пока что скрипты запускаю из NetBeans...
#5
Отправлено 14 октября 2010 - 17:22
Вот так вот вызывать не надо. PHPUnit запускает и контролирует выполнение тестов своими средствами, а тут вы пытаетесь явно вызвать нужные методы.всё что пишу напоминает сл. структуру:
require_once 'PHPUnit/Extensions/SeleniumTestCase.php'; class Example extends PHPUnit_Extensions_SeleniumTestCase { protected function setUp() public function test_comps() }
А с утра мне захотелось написать что-то вроде
$myvar = new Example;
$myvar -> setUp();
$myvar -> test_comps();
Это не сессия не начата, а надо по-другому подключать файлы PHPUnit-a.при попытке такого обращения выдало ошибку что сессия не начата.
Fatal error: Uncaught exception 'PHPUnit_Framework_Exception' with message 'Could not find class
У меня такая проблема возникала, если я подключал файл с классом тесткейса непосредственно.
Обычно лечится заменой на подключение вида:
require_once 'PHPUnit/Framework.php';
На самом деле это особенность PHPUnit-a, а точнее изначальный дизайн еще JUnit-a, что все тестовые методы начинаются с префика test.получается что Example наследует от PHPUnit_Extensions_SeleniumTestCase
PHPUnit_Extensions_SeleniumTestCase наследует от PHPUnit_Framework_TestCase
а в PHPUnit_Framework_TestCase происходят реально чудеса, вроде тех, что в файле
File/Iterator/Factory.php и Iterator.php
т.е. парсятся назавания функций
test_comps()
и если они не начинаются со слова test то не выполняются.
В более поздних версиях уже введены аннотации, так что если вы опишете метод в виде:
/** * @Test */ public function myTestFunc(){ ... }То такой метод будет исполняться. Почитайте документацию по PHPUnit для подробной информации
#6
Отправлено 14 октября 2010 - 17:40
Тут сразу хочу отметить, что для подобной задачи, а именно, запуска тестов через удаленный сайт лучше разделить управляющую часть, где будут выставляться параметры и исполняемую, в которой будет выполняться запуск тестов. По сути исполняемую часть можно свести к запуску командной строки. А управляющая часть просто формирует конфигурационный файл, инициирует запуск (отдельным потоком, чтобы страница по таймауту не вылетела) и периодически обновляет статус выполнения, с определенной периодичностью считывая вывод (который лучше перенаправить в файл).мне пока-что (а собственно начал что-то осознанно писать для selenium на php только вчера) - скорее просто непривычно писать таким образом. Внутри класса.
До этого долгое время общался с Jmeter, поэтому испытываю дискомфорт от того что не вижу, каким образом и какие данные отпрваляются серверу.
Одна из первых задач перед мной посавленных - сделать на selenium автоматического паука который проходит по сайту и снимает массу скриншотов со страниц. У меня. Делается это для дизайнеров чтобы им не нужно было тыкать по ссылкам а просто запустить скрипт и посмотреть на результаты.
Я вот думаю организовать в локалке на своём хосте сервер, чтобы дизайнер мог подключится к нему, задать адрес и параметры сайта - а в ответ получить архив скриншотов... Пока что скрипты запускаю из NetBeans...
Также, как вариант, посмотрите на системы Continuous Integration. Например, Cruise Control, Hudson.
#7
Отправлено 14 октября 2010 - 18:19
Вообще-то нет ничего плохого в том, чтобы делать тесты на уровне HTTP-протокола, если клиентская часть приложения достаточно проста. Но Selenium для этого не нужен, просто возьмите любой HTTP-клиент и пишите тесты с использованием этого клиента и чистого PHPUnit, без всяких расширений. Да, наверное ещё какой-нибудь HTML-парсер придётся использовать. Работа с DOM-деревом вроде бы входит в стандартную библиотеку, XPath тоже. Правда, если всё это соединить вместе, получается паровоз ничуть не проще, чем Selenium :)Общение с сервером через лес классов PHPUnit drives me crazy.
Подскажите где посмотерть либо приведиет пример запросов для сервера. Хочу попробовать используюя PHP общатся с сервером напрямую. Мне как-то это будет проще возможно, потому что HTTP, мне кажется, знаю лучше, чем структуру классов классов наследников классов....
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#8
Отправлено 14 октября 2010 - 18:24
А вот у меня недавно возникла ровно противоположная проблема -- сделал я одному из клиентов тесты на JMeter, а он жалуется, что логика исполнения не видна, приходится шариться по всему дереву, чтобы что-нибудь понять, нет бы, говорит, нормальным программным кодом всё было написано :)мне пока-что (а собственно начал что-то осознанно писать для selenium на php только вчера) - скорее просто непривычно писать таким образом. Внутри класса.
До этого долгое время общался с Jmeter, поэтому испытываю дискомфорт от того что не вижу, каким образом и какие данные отпрваляются серверу.
Если очень хочется видеть, какие запросы тесты отправляет на сервере и какие ответы получает -- гоните тесты через прокси (например Fiddler), и смотрите запросы и ответы там.
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных