オブジェクトのリストと各オブジェクトの「削除」リンクを表示するページで Selenium を実行しています。
ユーザーが削除リンクをクリックするたびに、確認ダイアログが表示され、確認を求められます。ユーザーが [OK] をクリックすると、オブジェクトが削除され、ページがリロードされます。
ここで、この動作をPHPUnitとSeleniumでテストしたいと思います。
次のコードは、私が最終的に試したものです。
$this->open('account/admin');
$this->assertElementPresent('css=h1');
[...]
$this->verifyElementPresent('css=td.button-column a.delete[href$="delete/1"]');
$this->click('css=td.button-column a.delete[href$="delete/1"]');
$this->assertConfirmation('*supprimer*'); (1)
// $this->waitForPageToLoad(); (2)
$this->waitForElementNotPresent('css=td.button-column a.delete[href$="delete/1"]'); (3)
機能の手動テストは問題ないので、テストは成功するはずです。また、このページのログイン保護を無効にしました。すべてのユーザーがアクセスできます。
残念ながら、ページがリロードされたかどうかをテストすることはできません。テスト(3)は常に「WaitFor タイムアウト」で失敗します...
ドキュメントを理解した後、Selenese の観点からの問題は、ページのリロードを引き起こすアクションはclick()ですが、確認ポップアップ ダイアログが true を返した後に実際にリロードが行われることです。また、waitForXXX()コマンドは、リロードを引き起こすアクションの直後に起動する必要があります。
(1)にコメントしようとしましたが、Selenium のドキュメントには、ポップアップ ダイアログは関連するassertXXX( ) で処理する必要があると書かれています。結果は同じです。
(2)でwaitForPageToLoad()も試みましたが、これはただ... 待機します (300000000 ミリ秒、デフォルト値は明らかに、どのページでもリロードするのに十分です...)
私は立ち往生しており、この単純でかなり平凡な動作をテストする方法を理解できません...何が欠けていますか?