Selenium 2 (WebDriver) und Phpunit?

Lesezeit: 5 Minuten

Weiß jemand, wie man Selenium 2 mit Phpunit verwendet? Gibt es Selenium 2-Beispiele in PHP?

  • +1 Das ist eine sehr gute Frage. Ich wollte es vor einiger Zeit fragen, weil die Selenium-Seite leider nicht sehr freundlich für PHP-Benutzer ist. In letzter Zeit wird viel über WebDriver geredet, aber ich habe diese beiden noch nicht in Aktion gesehen.

    – nimmthin

    17. November 2010 um 19:32 Uhr

  • PHPUnit unterstützt Selenium2 ab Version 3.6 Details siehe phpunit.de/manual/3.6/de/…

    – Poterka

    27. April 2012 um 13:33 Uhr

Benutzer-Avatar
cmc

Schnelles Update: phpunit unterstützt jetzt Selenium 2


Zum Zeitpunkt des Schreibens unterstützt PHPUnit Selenium 2 nicht.

php-webdriver aus Facebook ermöglicht es, die komplette WebDriver-API auf elegante Weise aus PHP heraus aufzurufen. Zitieren:

Bei den meisten Kunden müssen Sie zuerst das Protokoll lesen, um zu sehen, was möglich ist, und dann den Kunden selbst studieren, um zu sehen, wie man ihn nennt. Dies hofft, den letzten Schritt zu eliminieren.

Es wird verwendet, indem der Selenium 2-Server gestartet wird, der die Schnittstelle unter bereitstellt localhost:4444/wd/hub.

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

dann Ausführen des PHP-Testcodes, der diese Schnittstelle aufruft. Zum Beispiel:

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

Das WebDriver-API wird PHP-Methoden zugeordnet, vergleiche Aufrufe click an element im Beispiel mit dem API-Aufruf element/click in der Dokumentation.

Der Testcode kann dann in reguläre phpUnit-Tests verpackt werden.

Dies ist keine native phpUnit-Unterstützung, aber es ist ein ziemlich robuster Ansatz.

  • Danke für den Hinweis auf diesen Facebook-Wrapper. Es scheint, als würden viele Befehle wie sendKeys nicht funktionieren

    – Adil

    31. Oktober 2011 um 10:44 Uhr

  • Hallo Adil! Sie meinen, viele Befehle funktionieren nicht in der andere PHP-Selenium-Implementierungen, Rechts? Das ist nur ein weiterer Grund, dieses zu verwenden, die Architektur macht es von Natur aus komplett.

    – cmc

    1. Dezember 2011 um 10:57 Uhr


  • @cmc: Es gibt nichts in @[email protected], was es “von Natur aus vollständig” machen würde (ich dachte, es scheint ziemlich einfach zu sein, neue Befehle hinzuzufügen). Es gibt eine statische Liste akzeptierter Befehle (siehe die @getMethod()@-Funktionen in den verschiedenen Klassen).

    – Tgr

    8. März 2012 um 12:26 Uhr

  • @Tgr: Bitte beachten Sie den Teil “Einige unvermeidbare Ausnahmen von der direkten Protokollübersetzung”. in die Readme.

    – cmc

    9. März 2012 um 2:28 Uhr


  • Schnelles Update – phpunit unterstützt jetzt Selenium 2 phpunit.de/manual/3.6/en/selenium.html

    – Polsonby

    23. November 2012 um 15:39 Uhr

schau dir bitte die an http://code.google.com/p/php-webdriver-bindings/ . Dies ist eine PHP-Bibliothek, die über JsonWireProtocol mit dem Selenium Webdriver-Server kommuniziert. Dies ist eine frühe Version, aber es funktioniert.

  • Es gibt auch dieses andere PHP-Bindungsbibliothek. Beide Bibliotheken scheinen im Moment ziemlich aktiv zu sein.

    – Stefan

    15. Juli 2011 um 15:38 Uhr


  • PHPUnit verfügt über eine eigene Selenium-Bibliothek, die die JsonWireProtocol-Webtreiberbindungen besser nachahmt (phpunit.de/manual/3.6/en/selenium.html). Wenn Sie den WebDriver verwenden möchten, wird der von Facebook aktiver unterstützt.

    – bcoughlan

    20. Mai 2012 um 10:17 Uhr

  • Zuletzt aktualisiert seit zwei Jahren. Verwenden Sie die instaclick/webdriver Paket statt!

    – falsch

    7. Juni 2013 um 7:30 Uhr

Benutzer-Avatar
Ondrej Machulda

Derzeit (2017) empfehle ich die Verwendung php-webdriverwas AFAIK die vollständigste PHP-Sprachbindung mit den meisten Funktionen ist, um mit Selenium WebDriver zu interagieren.

Diese Bibliothek wurde 2014 neu geschrieben, um Selenium 2 zu unterstützen, und ihre API basiert hauptsächlich auf den offiziellen Java WebDriver-Bindungen. So können Sie auch in Java geschriebene Codebeispiele nutzen, da diese in der Regel einfach in PHP nachvollzogen werden können. Es ist auch in einer modernen OOP-Weise geschrieben und folgt den Standard-PSR-4-Namespaces und auch den PSR-2-Codierungsstandards.

Ich würde diese Bibliothek weiter empfehlen phpunit-selenium – da es ursprünglich für Selenium 1 entwickelt wurde (obwohl es heutzutage Selenium 2 unterstützt) und seine API stark an PHPUnit gebunden ist. Es unterstützt auch einige der WebDriver-Funktionen nicht und ist nicht auf dem neuesten Stand von Upcomin W3C WebDriver-Spezifikation.

Php-Webdriver ist andererseits eine unabhängige Bibliothek, aber seine Integration mit PHPUnit ist ganz einfach – oder Sie können vorhandene Tools wie verwenden Steward, das die gesamte PHPUnit-Integration enthält und auch eine nette Convenience-Schicht und z. ermöglichen es, einfach mehrere Tests parallel auszuführen (ohne dass andere Tools wie z paratest).

Es gibt auch andere Integrationsoptionen für Testframeworks, die auf der erwähnt werden Projekthomepage.

  • Rechtzeitig, da ich erst kürzlich das halboffizielle phpunit-selenium erneut versucht habe, um festzustellen, dass die Dokumentation noch fehlt. Es ist jedoch auch eine Herausforderung, diesen zuverlässig zum Laufen zu bringen.

    – Paul R. Rogers

    28. August 2016 um 21:49 Uhr

PHPUnit Selenium-Integrationscode lebt als separates Projekt in githubsoweit ich sehen kann, wird Selenium 2 nicht unterstützt, daher wäre die Antwort auf Ihre Frage – Nein, Sie können Selenium 2 nicht mit PHPUnit verwenden.

Aber Sie können den Quellbaum klonen und ihn mit Selenium 2 zum Laufen bringen.

Wir haben dafür eine Bibliothek erstellt, ich hoffe, es hilft. Es verwendet auch das JSON Wire-Protokoll, aber wir wollten es mit den Beispielen aus anderen Sprachen kompatibel machen, sodass die Syntax sehr ähnlich wäre. Hier ist der Link: https://github.com/Nearsoft/PHP-SeleniumClient

Wenn es dir gefällt, teile es, verbessere es oder forke es 🙂

Grüße, Mark.

Benutzer-Avatar
Benutzer887648

phpunit-Webtreiberbindungen werden auf Google-Code gehostet. Darüber hinaus müssen wir noch etwas verstehen.

  1. PHPUnit muss installiert sein. (Entweder über das PEAR-Paket oder manuell herunterladen und installieren)
  2. PHP IDE wie Eclipse PDT muss heruntergeladen und installiert werden.
  3. Der Selenium-Stand-Alone-Server muss laufen, während der WebDriver Selenium-Test ausgeführt wird

Benutzer-Avatar
Adamantus

Ich habe ein Tutorial darüber geschrieben, wie man Selenium 2, Facebook Wrapper, verwendet, finden Sie es hier:

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

1245190cookie-checkSelenium 2 (WebDriver) und Phpunit?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy