Quelqu'un sait-il comment utiliser Selenium 2 avec Phpunit? Y a-t-il des échantillons de sélénium 2 en PHP?Selenium 2 (WebDriver) et Phpunit?
Répondre
mise à jour rapide: phpunit ne supporte maintenant Sélénium 2
Au moment de l'écriture, PHPUnit ne supporte pas Sélénium 2.
php-webdriver de facebook permet à l'API complète WebDriver à appeler de PHP d'une manière élégante. Pour citer:
La plupart des clients doivent d'abord être lu le protocole pour voir ce qui est possible , étudier alors le client lui-même pour voir comment l'appeler. Ce espère éliminer la dernière étape.
Il est utilisé en démarrant le 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 d'exécuter 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();
Le WebDriver API est mis en correspondance avec les méthodes PHP, comparer appelant click
sur element
dans l'exemple avec l'élément/cliquez sur appel API dans la documentation.
Le code de test peut ensuite être enveloppé dans des tests phpUnit réguliers.
Ce n'est pas un support natif de phpUnit, mais c'est une approche assez robuste.
Merci de pointer vers cet emballage facebook. Il semble que beaucoup de commandes ne fonctionnent pas comme sendKeys – Adil
Hey Adil! Vous voulez dire que beaucoup de commandes ne fonctionnent pas dans les _autres implémentations PHP selenium_, non? C'est juste une autre raison d'utiliser celui-ci, l'architecture le rend intrinsèquement complet. – cmc
@cmc: Il n'y a rien dans @ php-webdriver @ qui le rendrait "intrinsèquement complet" (il semble assez facile d'ajouter de nouvelles commandes). Il existe une liste statique de commandes acceptées (voir les fonctions @getMethod() @ dans les différentes classes). – Tgr
PHPUnit Selenium code d'intégration vit comme un projet distinct dans github, autant que je peux voir qu'il ne supporte pas Selenium 2, donc la réponse à votre question serait - Non, vous ne pouvez pas utiliser Selenium 2 avec PHPUnit.
Mais vous pouvez cloner l'arbre source et le faire fonctionner avec Sélénium 2.
Pour le moment, je me suis contenté d'utiliser Java pour les tests. Le Dbunit de Java est beaucoup plus rapide que le port PHP. –
La prise en charge du sélénium est fournie avec PHPUnit: http://www.phpunit.de/manual/3.6/en/selenium.html – bcoughlan
s'il vous plaît consulter le http://code.google.com/p/php-webdriver-bindings/. C'est une bibliothèque PHP qui communique avec le serveur Selenium Webdriver en utilisant JsonWireProtocol. Ceci est la première version, mais cela fonctionne.
Il existe également cette autre [Php binding library] (https://github.com/chibimagic/WebDriver- PHP). Les deux bibliothèques semblent être plutôt actives en ce moment. –
PHPUnit possède sa propre bibliothèque Selenium qui reproduit mieux les liaisons de pilotes Web JsonWireProtocol (http://www.phpunit.de/manual/3.6/en/selenium.html). Si vous voulez utiliser celui de WebDriver, celui de Facebook est plus activement supporté. – bcoughlan
Dernière mise à jour depuis deux ans. Utilisez plutôt le paquet [instaclick/webdriver] (https://packagist.org/packages/instaclick/php-webdriver)! – falsch
Les liaisons phpunit webdriver sont hébergées sur google code. Il y a quelque chose que nous devons comprendre au-delà de cela.
- PHPUnit doit être installé. (Soit via le paquetage PEAR, soit en le téléchargeant et l'installant manuellement)
- PHP IDE tel que Eclipse PDT doit être téléchargé et installé.
- serveur Selenium-autonome doit être en cours d'exécution lors de l'exécution du test Selenium WebDriver
Pourquoi un IDE doit-il être installé? –
Nous avons créé une bibliothèque pour cela, j'espère que ça aide. Il utilise également le protocole JSON Wire mais nous avons cherché à le rendre compatible avec les exemples d'autres langages, donc la syntaxe serait très similaire. Voici le lien: https://github.com/Nearsoft/PHP-SeleniumClient
Si vous aimez, partagez, l'améliorer ou de la fourche it :)
Cordialement, Marc.
j'ai écrit un tutoriel sur la façon d'utiliser Selenium 2, wrapper Facebook, trouver ici:
http://testigniter.blogspot.co.uk/2012/01/running-selenium-2-webdriver-using.html
Je Recommenéd l'utilisation de Menta, un cadre Sélénium 2 qui exige WebDriver. Les deux paquets sont compatibles avec PSR-0, donc vous pouvez les utiliser avec Composer. Vous pouvez configurer le sélénium 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 bootstrap lit les variables de configuration de testing.selenium. *, De sorte que vous pouvez facilement définir 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 mettre en œuvre vos testcases. 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 paquet Menta ont également deux fichiers de démonstration, situés here
Oui, Selenium 2 (WebDriver)
et PHPUnit tests
est simple. Mais puis-je vous donner des conseils que le premier vous devriez être essayer Selenium IDE
parce que vous devez vous attendre à selenium command
. Si vous vous attendez à Selenium command
si oui selenium 2 (Webdriver)
et PHPUnit test
sera plus simple pour vous.
Vous pouvez essayer selenium IDE
tutoriels sur here et vous pouvez apprendre selenium 2 (Webdriver) and PHPUnit
à here.
Aujourd'hui a fait un saut en profondeur dans Selenium et phpunit. Il est possible et vous pouvez trouver quelques exemples et instructions ici: http://phpunit.de/manual/current/en/selenium.html
Créateur de PHPUnit a obtenu quelques beaux exemples de l'api. Avec un peu d'expérimentation et en lisant le message d'erreur, vous vous entendrez. Havn't trouvé moi-même une grande bibliothèque.
https://github.com/sebastianbergmann/phpunit-selenium/blob/master/Tests/Selenium2TestCaseTest.php
dernier avec un tutoriel de Nettuts qui vous aide sur les bases: http://net.tutsplus.com/tutorials/php/how-to-use-selenium-2-with-phpunit/
lien mort: https://phpunit.de/manual/current/fr/selenium.html –
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.
Actuellement (2017) Je recommande d'utiliser php-webdriver, ce qui est AFAIK la liaison de langage PHP complète la plus complète pour interagir avec Selenium WebDriver.
Cette bibliothèque a été réécrite en 2014 pour prendre en charge Selenium 2, et son API est principalement basée sur les liaisons Java WebDriver officielles. 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 d'une manière OOP moderne et suit les espaces de noms standard PSR-4 et les normes de codage PSR-2.
Je recommande cette bibliothèque sur phpunit-selenium - comme elle a été conçue à l'origine pour le sélénium 1 (bien qu'elle supporte aujourd'hui le sélénium 2) et son API est étroitement liée à PHPUnit. Il ne prend pas en charge certaines fonctionnalités de WebDriver et n'est pas à jour avec upcomin W3C WebDriver specification.
Php-WebDriver est d'autre part bibliothèque indépendante, mais son intégration avec PHPUnit est assez simple - ou vous pouvez utiliser les outils existants comme Steward, qui comprend toute l'intégration de PHPUnit et de fournir aussi belle couche de commodité et par exemple. permettre 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 structure de test mentionnées sur le project homepage.
Comme je l'ai récemment réessayé le phpunit-sélénium semi-officiel pour trouver les docs manquent encore. Cependant, faire fonctionner celui-ci de manière fiable est également un défi. –
+1 C'est une très bonne question. Je voulais le poser il y a quelque temps, car, désolé de le dire, la page Selenium n'est pas très conviviale pour les utilisateurs de PHP. Il y a beaucoup de buzz sur WebDriver ces derniers temps, mais je n'ai pas encore vu ces deux-là en action. – takeshin
PHPUnit prend en charge Selenium2 à partir de la version 3.6 Pour plus de détails, voir http://www.phpunit.de/manual/3.6/en/selenium.html#selenium.selenium2testcase – Potherca