Кто-нибудь знает, как использовать 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. Мы должны понять что-то сверх этого.
Я написал учебник о том, как использовать оболочку 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. Я собираюсь выполнить больше команд.