In diesem Artikel wird das Webdriver -Paket von Facebook für die Browseremulation in PHP untersucht und auf einem früheren Artikel (hier nicht enthalten) mit Selenium mit Phpunit erstellt. Es konzentriert sich auf Akzeptanztests und Automatisierung von Browser -Interaktionen.
Schlüsselunterschiede von der Selenium -Erweiterung von Phpunit:
tearDown()
im Gegensatz zum automatischen Handling von Phpunit. RemoteWebDriver
-Kläufe für die Selenium -Server -Interaktion. Implementierungsschritte:
Installation: Verwenden Sie den Komponisten, um das Facebook -Webdriver -Paket zu installieren: composer require facebook/webdriver --dev
Testklassen -Setup: Erstellen Sie eine Phpunit -Testklasse (z. B. UserSubscriptionTestFB.php
) PHPUnit_Framework_TestCase
. Die setUp()
-Methode initialisiert die RemoteWebDriver
-Schelle, die die Selenium -Serveradresse (http://localhost:4444/wd/hub
standardmäßig) und die gewünschten Browserfunktionen (z. B. Firefox oder Chrom) angeben.
public function setUp() { $this->webDriver = RemoteWebDriver::create('http://localhost:4444/wd/hub', DesiredCapabilities::firefox()); }
Browserverschluss: Die tearDown()
-Methode ist entscheidend, um die Browser -Sitzung nach jedem Test zu schließen:
public function tearDown() { $this->webDriver->quit(); }
Form Wechselwirkung: Die fillFormAndSubmit()
-Methode verwendet findElement()
mit WebDriverBy
, um Formularelemente zu lokalisieren und mit ihnen zu interagieren.
public function fillFormAndSubmit($inputs) { $this->webDriver->get('http://vaprobash.dev/'); // Replace with your URL $form = $this->webDriver->findElement(WebDriverBy::id('subscriptionForm')); // Replace with your form ID foreach ($inputs as $input => $value) { $form->findElement(WebDriverBy::name($input))->sendKeys($value); } $form->submit(); }
Testfälle: Testmethoden verwenden Datenanbieter (aus dem vorherigen Artikel angenommen), um Testeingänge zu liefern. Behauptungen überprüfen die erwarteten Ergebnisse (Erfolgs- oder Fehlermeldungen). Beispiel:
/** * @dataProvider validInputsProvider */ public function testValidFormSubmission(array $inputs) { $this->fillFormAndSubmit($inputs); $content = $this->webDriver->findElement(WebDriverBy::tagName('body'))->getText(); $this->assertEquals('Everything is Good!', $content); // Replace with your success message }
Screenshot Capture: Die takeScreenshot()
-Methode ermöglicht das Erfassen von Screenshots während der Testausführung:
$this->webDriver->takeScreenshot(__DIR__ . "/../../public/screenshots/screenshot.jpg");
Warten auf Elemente: Die wait()
-Methode mit until()
oder WebDriverExpectedCondition
verarbeitet eine asynchrone Seite. Laden Sie:
$this->webDriver->wait(10, 300)->until(WebDriverExpectedCondition::presenceOfElementLocated(WebDriverBy::name('username')));
Erweiterte Interaktionen: Der Artikel umfasst fortgeschrittenere Interaktionen wie Drag-and-Drop, Alarmhandhabung und Tastaturverknüpfungen.
Kopflosen Tests: In dem Artikel wird erläutert, wie XVFB (x Virtual FrameBuffer) für kopflose Browser -Tests auf Systemen ohne grafische Anzeige verwendet werden. Beide Methoden (Ausführen von XVFB separat und xvfb-run
) sind detailliert.
Nützliche Links (aus Original wiederholt):
Der Artikel schließt mit der Betonung des breiteren Dienstprogramms von Selen über das Testen, einschließlich der Browser -Automatisierungsaufgaben. Ein FAQ -Abschnitt enthält weitere Anleitungen zu Installation, grundlegenden Tests, Ausnahmebehandlung, Behauptungen, Browserauswahl, Elementinteraktion, Warten auf Elemente, Screenshot -Erfassung, Warnmeldung und parallele Testausführung.
Das obige ist der detaillierte Inhalt vonVerwenden der Selenium -Web -Treiber -API mit Phpunit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!