Intereting Posts
Как конвертировать дружественный URL-адрес в исходный URL-адрес PHP – удалить тег <img> из строки вставлять случайно названные mp3 в html Как получить последнее значение автоматического прироста в качестве внешнего ключа для другой таблицы в php Как вернуть файл в PHP Имеет ли php эквивалент виртуальной или виртуальной памяти python? PHPUnit загружает все классы одновременно. Вызывает PHP Неустранимая ошибка: не удается переопределить класс php imagecopyresampled низкого качества Jqgrid Pass выбирает значения столбцов строк для dataurl ожидание не удалось в android при загрузке фотографий Отслеживание времени выполнения скрипта в PHP Экспорт большой базы данных в файл без mysqldump, низкий объем памяти Попытка получить свойство не-объекта в PHP JSON php warning fclose () ожидает, что параметр 1 является ресурсом, имеющим логическое значение Google транслитерация не работает на веб-сайте доступа к SSL

Selenium 2 (WebDriver) и Phpunit?

Кто-нибудь знает, как использовать Selenium 2 с Phpunit? Есть ли образцы Selenium 2 в PHP?

Быстрое обновление: phpunit теперь поддерживает Selenium 2


На момент написания PHPUnit не поддерживает Selenium 2.

php-webdriver из facebook позволяет вызывать полный API WebDriver от PHP в элегантном стиле. Цитировать:

Большинство клиентов требуют, чтобы вы сначала прочитали протокол, чтобы узнать, что возможно, а затем изучите сам клиент, чтобы узнать, как его назвать. Это надеется устранить последний шаг.

Он используется при запуске сервера Selenium 2, который обеспечивает интерфейс на localhost:4444/wd/hub .

 /usr/bin/java -jar /path/to/selenium-server-standalone-2.7.0.jar 

затем запускает тестовый код PHP, который вызывает этот интерфейс. Например:

 <?php require '/path/to/php-webdriver/__init__.php'; $webdriver = new WebDriver(); $session = $webdriver->session('opera', array()); $session->open("http://example.com"); $button = $session->element('id', 'my_button_id'); $button->click(); $session->close(); 

API WebDriver сопоставляется с методами PHP, сравнивает вызов с click по element в примере с вызовом API элемента / клика в документации.

Затем тестовый код можно обернуть в обычные тесты phpUnit.

Это не родная поддержка phpUnit, но это довольно надежный подход.

ознакомьтесь с http://code.google.com/p/php-webdriver-bindings/ . Это библиотека PHP, которая взаимодействует с сервером Selenium Webdriver с помощью JsonWireProtocol. Это ранняя версия, но она работает.

В настоящее время (2017 год) я рекомендую использовать php-webdriver , что является AFAIK самой функциональной связью языка PHP для взаимодействия с Selenium WebDriver.

Эта библиотека была переписана в 2014 году для поддержки Selenium 2, и ее API в основном основан на официальных привязках Java WebDriver. Это означает, что вы также можете использовать примеры кода, написанные на Java, поскольку их обычно можно просто использовать в PHP. Он также написан в современном стиле ООП и соответствует стандартным пространствам имен PSR-4, а также стандартам кодирования PSR-2.

Я бы порекомендовал эту библиотеку поверх phpunit-selenium – поскольку она была первоначально разработана для Selenium 1 (хотя в настоящее время поддерживает Selenium 2), и ее API сильно связан с PHPUnit. Он также не поддерживает некоторые функции WebDriver и не обновляется с помощью спецификации upcomin W3C WebDriver .

Php-webdriver – это, с другой стороны, независимая библиотека, но ее интеграция с PHPUnit довольно проста – или вы можете использовать существующие инструменты, такие как Steward , который включает в себя всю интеграцию PHPUnit и обеспечивает также приятный уровень удобства и, например. позволяют просто запускать несколько тестов параллельно (без необходимости использования других инструментов, таких как paratest ).

Существуют также другие варианты интеграции платформы тестирования, упомянутые на главной странице проекта .

Код интеграции PHPUnit Selenium живет как отдельный проект в github , насколько я вижу, он не поддерживает Selenium 2, поэтому ответ на ваш вопрос будет: Нет, вы не можете использовать Selenium 2 с PHPUnit.

Но вы можете клонировать исходное дерево и заставить его работать с Selenium 2.

Мы создали для этого библиотеку, надеюсь, это поможет. Он также использует протокол JSON Wire, но мы стремились сделать его совместимым с примерами с других языков, поэтому синтаксис будет очень похожим. Вот ссылка: https://github.com/Nearsoft/PHP-SeleniumClient

Если вам это нравится, поделитесь им, улучшите его или разбудите 🙂

С уважением, Марк.

привязки webpriver phpunit размещаются в коде google. Мы должны понять что-то сверх этого.

  1. Необходимо установить PHPUnit. (Либо через пакет PEAR, либо загрузить и установить вручную)
  2. PHP IDE, такой как Eclipse PDT, необходимо загрузить и установить.
  3. Сервер Selenium-Stand-Alone должен работать при выполнении теста WebDriver Selenium

Я написал учебник о том, как использовать оболочку Selenium 2, Facebook, найти его здесь:

http://testigniter.blogspot.co.uk/2012/01/running-selenium-2-webdriver-using.html

Я рекомендовал использовать Menta , Selenium 2 Framework, для которой требуется WebDriver . Оба пакета совместимы с PSR-0, поэтому вы можете использовать их вместе с Composer. Вы можете настроить селен с помощью phpunit.xml. Вот пример

 <phpunit bootstrap="tests/bootstrap.php" backupGlobals="false" backupStaticAttributes="false" strict="true" verbose="true"> <php> <var name="testing.selenium.seleniumServerUrl" value="http://localhost:4444/wd/hub" /> <var name="testing.selenium.browser" value="firefox" /> <var name="testing.selenium.windowPosition" value="0,0" /> <var name="testing.selenium.windowSize" value="1280x1024" /> <var name="testing.selenium.windowFocus" value="1" /> <var name="testing.selenium.timeoutImplicitWait" value="10000" /> </php> <testsuites> <testsuite name="Integrationstests"> <directory suffix="Test.php" phpVersion="5.3.0" phpVersionOperator=">=">tests/integration</directory> </testsuite> </testsuites> <logging> <log type="junit" target="build/logs/junit.xml"/> </logging> </phpunit> во <phpunit bootstrap="tests/bootstrap.php" backupGlobals="false" backupStaticAttributes="false" strict="true" verbose="true"> <php> <var name="testing.selenium.seleniumServerUrl" value="http://localhost:4444/wd/hub" /> <var name="testing.selenium.browser" value="firefox" /> <var name="testing.selenium.windowPosition" value="0,0" /> <var name="testing.selenium.windowSize" value="1280x1024" /> <var name="testing.selenium.windowFocus" value="1" /> <var name="testing.selenium.timeoutImplicitWait" value="10000" /> </php> <testsuites> <testsuite name="Integrationstests"> <directory suffix="Test.php" phpVersion="5.3.0" phpVersionOperator=">=">tests/integration</directory> </testsuite> </testsuites> <logging> <log type="junit" target="build/logs/junit.xml"/> </logging> </phpunit> во <phpunit bootstrap="tests/bootstrap.php" backupGlobals="false" backupStaticAttributes="false" strict="true" verbose="true"> <php> <var name="testing.selenium.seleniumServerUrl" value="http://localhost:4444/wd/hub" /> <var name="testing.selenium.browser" value="firefox" /> <var name="testing.selenium.windowPosition" value="0,0" /> <var name="testing.selenium.windowSize" value="1280x1024" /> <var name="testing.selenium.windowFocus" value="1" /> <var name="testing.selenium.timeoutImplicitWait" value="10000" /> </php> <testsuites> <testsuite name="Integrationstests"> <directory suffix="Test.php" phpVersion="5.3.0" phpVersionOperator=">=">tests/integration</directory> </testsuite> </testsuites> <logging> <log type="junit" target="build/logs/junit.xml"/> </logging> </phpunit> 

Файл bootstrap считывает переменные конфигурации из test.selenium. *, Поэтому вы можете легко установить новые переменные.

 <?php \Menta_ConfigurationPhpUnitVars::addConfigurationFile(__DIR__ . '/../phpunit.xml'); $configuration = \Menta_ConfigurationPhpUnitVars::getInstance(); \Menta_SessionManager::init( $configuration->getValue('testing.selenium.seleniumServerUrl'), $configuration->getValue('testing.selenium.browser') ); 

Теперь вы можете легко реализовать свои тестовые тесты. Вот пример

 <?php namespace tests\integration; use WebDriver\LocatorStrategy; class TestSearch extends \PHPUnit_Framework_TestCase { public function testGoogle() { $session = \Menta_SessionManager::getSession(); $session->open('http://www.google.de'); $element = $session->element(LocatorStrategy::NAME, 'q'); $this->assertTrue($element->displayed()); } } 

В пакете Menta также есть два демонстрационных файла, расположенных здесь

Сегодня он совершил глубокий прыжок в селен и phpunit. Это возможно, и вы можете найти здесь несколько примеров и инструкций: http://phpunit.de/manual/current/en/selenium.html

Создатель phpunit получил несколько приятных примеров api. Немного экспериментируя и читая сообщение об ошибке, вы поедете. Не нашел и большую библиотеку.

https://github.com/sebastianbergmann/phpunit-selenium/blob/master/Tests/Selenium2TestCaseTest.php

Как последнее учебное пособие с nettuts, которое поможет вам по основам: http://net.tutsplus.com/tutorials/php/how-to-use-selenium-2-with-phpunit/

Да, PHPUnit tests Selenium 2 (WebDriver) и PHPUnit tests просты. Но могу ли я дать вам совет, что сначала вы должны попробовать Selenium IDE потому что вам нужно ожидать в selenium command . Если вы ожидаете в Selenium command если это так, selenium 2 (Webdriver) и PHPUnit test будут более простыми для вас.

Здесь вы можете попробовать учебные пособия по selenium IDE и вы можете узнать здесь selenium 2 (Webdriver) and PHPUnit .

Я работаю над selenium2php . У меня слишком много тестов для Selenium1, записанных с помощью Selenium IDE. Теперь он преобразует html-тесты в Selenium2. Собственно, для PHPUnit_Extensions_Selenium2TestCase. Я собираюсь выполнить больше команд.