0

オブジェクトのリストと各オブジェクトの「削除」リンクを表示するページで Selenium を実行しています。

ユーザーが削除リンクをクリックするたびに、確認ダイアログが表示され、確認を求められます。ユーザーが [OK] をクリックすると、オブジェクトが削除され、ページがリロードされます。

ここで、この動作をPHPUnitSeleniumでテストしたいと思います。

次のコードは、私が最終的に試したものです。

$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 ミリ秒、デフォルト値は明らかに、どのページでもリロードするのに十分です...)

私は立ち往生しており、この単純でかなり平凡な動作をテストする方法を理解できません...何が欠けていますか?

4

0 に答える 0