Селен 2 (WebDriver) и Phpunit? - PullRequest
       18

Селен 2 (WebDriver) и Phpunit?

38 голосов
/ 17 ноября 2010

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

Ответы [ 11 ]

19 голосов
/ 04 октября 2011

Быстрое обновление: 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 element / click в документации.

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

Это не встроенная поддержка phpUnit, но достаточно надежный подход.

8 голосов
/ 15 апреля 2011

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

5 голосов
/ 04 августа 2016

В настоящее время (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 и не соответствует новейшей спецификации W3C WebDriver .

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

На домашней странице проекта есть и другие варианты интеграции инфраструктуры тестирования..

3 голосов
/ 17 ноября 2010

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

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

2 голосов
/ 31 мая 2012

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

Если вам это нравится, поделитесь им, улучшите или раскошелитесь:)

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

1 голос
/ 09 октября 2013

Сегодня совершил глубокий прыжок в Selenium и 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/

1 голос
/ 04 июня 2013

Я рекомендовал использовать 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>

Файл начальной загрузки считывает переменные конфигурации из testing.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 также есть два демонстрационных файла, расположенных здесь

1 голос
/ 22 августа 2012

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

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

1 голос
/ 10 августа 2011
Привязки

phpunit webdriver хранятся в коде Google.Помимо этого, нам нужно кое-что понять.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...