web-dev-qa-db-fra.com

Sélénium 2 (WebDriver) et Phpunit?

Quelqu'un sait comment utiliser Selenium 2 avec Phpunit? Existe-t-il des échantillons de Selenium 2 en PHP?

38
Paul R Rogers

Mise à jour rapide: phpunit prend maintenant en charge Selenium 2


Au moment de la rédaction de ce document, PHPUnit ne prend pas en charge Selenium 2.

php-webdriver from facebook permet à l’API WebDriver complète d’être appelée à partir de PHP de manière élégante. Citer:

La plupart des clients exigent que vous lisiez d'abord le protocole pour voir ce qui se passe possible, puis étudiez le client lui-même pour voir comment l'appeler. Ce espère éliminer cette dernière étape.

Il est utilisé au démarrage du serveur Selenium 2, qui fournit l'interface à localhost:4444/wd/hub.

/usr/bin/Java -jar /path/to/Selenium-server-standalone-2.7.0.jar

puis en exécutant le code de test PHP, qui appelle cette interface. Par exemple:

<?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();

L'API WebDriver est mappé sur les méthodes PHP, comparez l'appel click à element dans l'exemple avec l'appel API élément/click dans la documentation.

Le code de test peut ensuite être encapsulé dans des tests phpUnit réguliers.

Ce n'est pas un support natif de phpUnit, mais c'est une approche assez robuste.

19
cmc

veuillez consulter le http://code.google.com/p/php-webdriver-bindings/ . Il s'agit de la bibliothèque PHP qui communique avec le serveur Selenium Webdriver à l'aide de JsonWireProtocol. C'est la première version mais ça marche.

8
kolec

Actuellement (2017), je recommande d'utiliser php-webdriver , ce qui est AFAIK le plus complet des fonctionnalités PHP lien de langue pour interagir avec Selenium WebDriver.

Cette bibliothèque a été réécrite en 2014 pour prendre en charge Selenium 2. Son API est principalement basée sur les liaisons officielles Java WebDriver. Cela signifie que vous pouvez également tirer parti des exemples de code écrits en Java, car ils peuvent généralement être simplement suivis en PHP. Il est également écrit de manière moderne OOP et suit les espaces de noms standard PSR-4 ainsi que les normes de codage PSR-2.

Je recommanderais cette bibliothèque à phpunit-Selenium - car elle a été conçue à l'origine pour Selenium 1 (bien qu'elle supporte maintenant Selenium 2) et que son API est très proche de PHPUnit. En outre, il ne prend pas en charge certaines des fonctionnalités de WebDriver et n’est pas à jour avec la spécification upcomin W3C WebDriver .

Php-webdriver est par contre une librairie indépendante, mais son intégration avec PHPUnit est assez simple - ou vous pouvez utiliser des outils existants comme Steward , qui inclut toute l'intégration de PHPUnit et fournit également un confort pratique couche et par exemple. permet de simplement exécuter plusieurs tests en parallèle (sans avoir besoin d’autres outils comme paratest ).

Il existe également d'autres options d'intégration de la structure de test mentionnées sur la page d'accueil project .

5
Ondrej Machulda

Le code d’intégration PHPUnit Selenium vit en tant que projet séparé dans github , autant que je sache, il ne prend pas en charge Selenium 2;.

Mais vous pouvez cloner l’arbre source et le faire fonctionner avec Selenium 2.

3
Anti Veeranna

Nous avons créé une bibliothèque pour cela, j'espère que cela aidera. Il utilise également le protocole JSON Wire, mais nous avons cherché à le rendre compatible avec les exemples d'autres langages. La syntaxe serait donc très similaire. Voici le lien: https://github.com/Nearsoft/PHP-SeleniumClient

Si vous l'aimez, partagez-le, améliorez-le ou déroulez-le :)

Cordialement, Mark.

2
markdrake

les liaisons phpunit webdriver sont hébergées sur google code. Il y a quelque chose que nous devons comprendre au-delà de cela.

  1. PHPUnit doit être installé. (Soit par le biais du package PEAR, soit par téléchargement et installation manuelle)
  2. PHP IDE tel que Eclipse PDT doit être téléchargé et installé.
  3. Le serveur Selenium-Stand-Alone doit être en cours d'exécution lors du test WebDriver Selenium
1
user887648

J'ai écrit un tutoriel sur l'utilisation de Selenium 2, wrapper Facebook, trouvez-le ici:

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

1
Adamantus

Aujourd’hui, j’ai plongé profondément dans Selenium et phpunit . C’est possible et vous pouvez trouver quelques exemples et instructions ici: http://phpunit.de/manual/current/fr/Selenium.html

Le créateur de phpunit a obtenu quelques exemples intéressants de l'api .Avec un peu d'expérimentation et en lisant le message d'erreur, vous vous entendrez bien . Je n'ai pas non plus trouvé une excellente bibliothèque.

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

En dernier lieu, un tutoriel avec nettuts qui vous aidera à comprendre les bases: http://net.tutsplus.com/tutorials/php/how-to-use-Selenium-2-with-phpunit/

1
HerrWalter

J'ai recommandé l'utilisation de Menta , un framework Selenium 2 nécessitant WebDriver . Les deux packages sont compatibles PSR-0, vous pouvez donc les utiliser avec Composer. Vous pouvez configurer Selenium avec le fichier phpunit.xml. Voici un exemple

<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>

Le fichier d'amorçage lit les variables de configuration de testing.Selenium. *, Ce qui vous permet de définir facilement de nouvelles variables.

<?php

\Menta_ConfigurationPhpUnitVars::addConfigurationFile(__DIR__ . '/../phpunit.xml');

$configuration = \Menta_ConfigurationPhpUnitVars::getInstance();
\Menta_SessionManager::init(
    $configuration->getValue('testing.Selenium.seleniumServerUrl'),
    $configuration->getValue('testing.Selenium.browser')
);

Maintenant, vous pouvez facilement implémenter vos tests. Voici un exemple

<?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());
    }
}

Le package Menta contient également deux fichiers de démonstration, situés ici

1
falsch

Oui, Selenium 2 (WebDriver) et PHPUnit tests est simple. Mais permettez-moi de vous conseiller de commencer par essayer Selenium IDE car vous devez vous attendre à Selenium command. Si vous vous attendez à Selenium command si Selenium 2 (Webdriver) et PHPUnit test sera plus simple pour vous.

Vous pouvez essayer les tutoriels Selenium IDE sur ici et vous pouvez apprendre Selenium 2 (Webdriver) and PHPUnit à ici .

0
user1699797

Je travaille sur Selenium2php . J'ai trop de tests pour Selenium1 enregistrés avec Selenium IDE. Maintenant, il convertit les tests HTML en Selenium2. En fait, pour PHPUnit_Extensions_Selenium2TestCase. Je vais implémenter plus de commandes.

0
rNix