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

Фотография

Selenium RC server (PHP)


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

#1 frei_by

frei_by

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

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

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

Общение с сервером через лес классов PHPUnit drives me crazy.
Подскажите где посмотерть либо приведиет пример запросов для сервера. Хочу попробовать используюя PHP общатся с сервером напрямую. Мне как-то это будет проще возможно, потому что HTTP, мне кажется, знаю лучше, чем структуру классов классов наследников классов....
  • 0

#2 vitorg

vitorg

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений

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

Рекомендую не заниматься ерундой, а разобраться с одним единственным классом, скорее всего в PHP-драйвере он зовётся так же как и в Java - DefaultSelenium. Класс этот - проще не придумаешь.
  • 0

#3 KaNoN

KaNoN

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

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

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

Рекомендую не заниматься ерундой, а разобраться с одним единственным классом, скорее всего в PHP-драйвере он зовётся так же как и в Java - DefaultSelenium. Класс этот - проще не придумаешь.

Если быть точным, то Testing_Selenium. Но в целом мысль верна. PHPUnit - это просто движок, а Selenium-клиент - это просто библиотека, содержащая набор методов для взаимодействия с веб-страницей.

Просто осталось разделить обязанности и куча проблем решается.

З.Ы.: Хотя непонятно, откуда там лес классов. Там всего-то класс теста и класс Селениума.
  • 0

#4 frei_by

frei_by

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

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

Отправлено 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...
  • 0

#5 KaNoN

KaNoN

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

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

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

всё что пишу напоминает сл. структуру:

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 запускает и контролирует выполнение тестов своими средствами, а тут вы пытаетесь явно вызвать нужные методы.


при попытке такого обращения выдало ошибку что сессия не начата.
Fatal error: Uncaught exception 'PHPUnit_Framework_Exception' with message 'Could not find class

Это не сессия не начата, а надо по-другому подключать файлы PHPUnit-a.
У меня такая проблема возникала, если я подключал файл с классом тесткейса непосредственно.
Обычно лечится заменой на подключение вида:

require_once 'PHPUnit/Framework.php';



получается что Example наследует от PHPUnit_Extensions_SeleniumTestCase
PHPUnit_Extensions_SeleniumTestCase наследует от PHPUnit_Framework_TestCase
а в PHPUnit_Framework_TestCase происходят реально чудеса, вроде тех, что в файле
File/Iterator/Factory.php и Iterator.php
т.е. парсятся назавания функций
test_comps()
и если они не начинаются со слова test то не выполняются.

На самом деле это особенность PHPUnit-a, а точнее изначальный дизайн еще JUnit-a, что все тестовые методы начинаются с префика test.
В более поздних версиях уже введены аннотации, так что если вы опишете метод в виде:
/**
 * @Test
 */
public function myTestFunc(){ ... }
То такой метод будет исполняться. Почитайте документацию по PHPUnit для подробной информации
  • 0

#6 KaNoN

KaNoN

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

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

Отправлено 14 октября 2010 - 17:40

мне пока-что (а собственно начал что-то осознанно писать для selenium на php только вчера) - скорее просто непривычно писать таким образом. Внутри класса.
До этого долгое время общался с Jmeter, поэтому испытываю дискомфорт от того что не вижу, каким образом и какие данные отпрваляются серверу.

Одна из первых задач перед мной посавленных - сделать на selenium автоматического паука который проходит по сайту и снимает массу скриншотов со страниц. У меня. Делается это для дизайнеров чтобы им не нужно было тыкать по ссылкам а просто запустить скрипт и посмотреть на результаты.

Я вот думаю организовать в локалке на своём хосте сервер, чтобы дизайнер мог подключится к нему, задать адрес и параметры сайта - а в ответ получить архив скриншотов... Пока что скрипты запускаю из NetBeans...

Тут сразу хочу отметить, что для подобной задачи, а именно, запуска тестов через удаленный сайт лучше разделить управляющую часть, где будут выставляться параметры и исполняемую, в которой будет выполняться запуск тестов. По сути исполняемую часть можно свести к запуску командной строки. А управляющая часть просто формирует конфигурационный файл, инициирует запуск (отдельным потоком, чтобы страница по таймауту не вылетела) и периодически обновляет статус выполнения, с определенной периодичностью считывая вывод (который лучше перенаправить в файл).

Также, как вариант, посмотрите на системы Continuous Integration. Например, Cruise Control, Hudson.
  • 0

#7 barancev

barancev

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

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


Отправлено 14 октября 2010 - 18:19

Общение с сервером через лес классов PHPUnit drives me crazy.
Подскажите где посмотерть либо приведиет пример запросов для сервера. Хочу попробовать используюя PHP общатся с сервером напрямую. Мне как-то это будет проще возможно, потому что HTTP, мне кажется, знаю лучше, чем структуру классов классов наследников классов....

Вообще-то нет ничего плохого в том, чтобы делать тесты на уровне HTTP-протокола, если клиентская часть приложения достаточно проста. Но Selenium для этого не нужен, просто возьмите любой HTTP-клиент и пишите тесты с использованием этого клиента и чистого PHPUnit, без всяких расширений. Да, наверное ещё какой-нибудь HTML-парсер придётся использовать. Работа с DOM-деревом вроде бы входит в стандартную библиотеку, XPath тоже. Правда, если всё это соединить вместе, получается паровоз ничуть не проще, чем Selenium :)
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#8 barancev

barancev

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

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


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

мне пока-что (а собственно начал что-то осознанно писать для selenium на php только вчера) - скорее просто непривычно писать таким образом. Внутри класса.
До этого долгое время общался с Jmeter, поэтому испытываю дискомфорт от того что не вижу, каким образом и какие данные отпрваляются серверу.

А вот у меня недавно возникла ровно противоположная проблема -- сделал я одному из клиентов тесты на JMeter, а он жалуется, что логика исполнения не видна, приходится шариться по всему дереву, чтобы что-нибудь понять, нет бы, говорит, нормальным программным кодом всё было написано :)

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


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

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