t.me/atinfo_chat Telegram группа по автоматизации тестирования

Не могу подключить Selenium к PHPUnit


(bncom) #1

Использую Eclipse, PHPUnit находится в "C:/php/PEAR/PHPUnit".

Создал в IDE проект, затем папку lib. В папку lib разместил путь до директории с PHPUnit ("Include Path" -> "Configure Include Path..." -> вкладка "Libraries" -> кнопка "Add External Source Folder...").
Затем в проекте создал php-файл следующего содержания:

<?php

class newfile extends PHPUnit_Framework_TestCase {

        function setUp() {
                $this->setBrowser("*firefox");
                $this->setBrowserUrl("http://google.com/");
        }

        function testMyTestCase() {
                $this->open("/");
                $this->type("q", "selenium");
                $this->click("btnG");
                sleep("5");
                $this->assertTrue($this->isTextPresent("Selenium"));
        }

}

Ошибок нет, классы от PHPUnit видятся на ура. Запускаю файл на исполнение, в консоль выводятся следующее:

PHPUnit 3.6.11 by Sebastian Bergmann.
Fatal error: Call to undefined method newfile::setBrowser() in C:\Works\Eclipce\site\tests\newfile.php on line 9

Т.е. я так понимаю, что у меня не видны классы от Selenium, хотя они подключены к проекту. Также пробовал делать require_once 'C:/php/PEAR/PHPUnit/Extensions/Selenium2TestCase.php', все равно не помогает.

http://i.pixs.ru/storage/3/5/4/2012060814_1597554_4981354.jpg

 


(Davert1) #2

В PHPUnit очень старый драйвер Селениума. Вы уверены, что хотите его использовать? Крайне советую не юзать всякие навороты PHPUnit, там сидит призрак 90ых и они крайне неюзабельны. В том числе модуль работы с БД.

Вам нужно глянуть в сторону Mink, для интеграции с Селениумом. 

Но если честно, то неужели вы думаете, что писать приемочные тесты на фреймворке дл юнит-тестирования это хорошая идея? Попробуйте лучше Codeception

Там никаких проблем при подключении Селениума нет, просто указываете модуль селениума и запускаете тест.


(bncom) #3

Мне, как вы говорите, навороты и не нужны, но и разбираться с Codeception или Mink не хочется. У меня есть тесты, написанные через Selenium IDE, я просто хочу взять их (предварительно переведя в формат PHPUnit) и манипулировать ими уже через PHPUnit. PHP выбрал, так как более с ним знаком, чем с Java, да и часть нужных мне тестов лучшего всего писать только на PHP.

Так что помогите, лучше, заставить PHPUnit видеть классы от Selenium. Может просто еще ко-где надо что-то дописать/подключить?

Нашел, что нужно наследоваться не от PHPUnit_Framework_TestCase, а от PHPUnit_Framework_SeleniumTestCase, но теперь при запуске теста пишется, что:

Fatal error: Class 'PHPUnit_Framework_SeleniumTestCase' not found in C:\Works\Eclipce\site\tests\newfile.php on line 7

UPD: заработало:

require_once 'C:/php/PEAR/PHPUnit/Extensions/SeleniumTestCase.php';

....

class newfile extends PHPUnit_Extensions_SeleniumTestCase {