Neben der Verwendung von sleep()
in meinem Test frage ich mich, ob jemand eine bessere Strategie kennt, um explizit auf das Senden eines Formulars (POST) zu warten weiter mit meinen Behauptungen. Hier ist eine sehr verkürzte Version von wie mein Test aussieht, mit phpunit zusammen php-webdriver von Facebook).php-webdriver: warte auf die Browserantwort nach dem Absenden des Formulars mit click()
function test_form_submission()
{
// setup
$web_driver = new WebDriver();
$session = $web_driver->session();
$session->open('http://example.com/login');
// enter data
$session->element('css selector', 'input[name=email]')->value(array('value' => str_split('[email protected]')));
$session->element('css selector', 'input[name=password]')->value(array('value' => str_split('testpassword')));
// click button to submit form
$session->element('css selector', 'button[name=submit]')->click();
// How do I wait here until the click() above submits the form
// so I can check that we correctly arrives at the destination below
// without resorting to sleep()?
// Confirm that login was successful because we landed on account page
$this->assertSame('http://example.com/account', $session->url());
// teardown
$session->close();
}
Also, wenn Sie diesen Code jetzt ausführen, die URL in der vorletzten Zeile (die Assertion) gibt http://example.com/login statt http://example.com/account? Vermutlich sollte der Selenium-Server warten, bis die Seite geladen ist, bevor er nach dem Element sucht. Die Ausnahme davon sind asynchrone Anfragen, aber Ihre sieht ziemlich synchron aus. Wohlgemerkt, ich benutze PHPUnit_Selenium, um Selenium – qrazi
Exakt zu fahren. Tatsächlich kann ich in diesem Moment auch einen Screenshot machen und sehen, dass ich immer noch auf example.com/login bin, aber wenn ich 1 Sekunde lang schlafe, vergeht die Assert, und der Screenshot zeigt, dass die Seite jetzt ein Beispiel ist. com/Konto. Ich habe gelesen, dass PHPUnit_Selenium nicht ganz auf Selenium 2 (aka Webdriver) läuft, weshalb ich mit dem obigen Ansatz fortgefahren bin. –