我在显示对象列表和每个对象的“删除”链接的页面上运行 Selenium。
每当用户单击删除链接时,都会显示一个确认对话框并要求确认。如果用户单击确定,则删除对象并重新加载页面。
现在,我想用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)总是在“等待超时”时失败......
在我对文档的理解之后,从 Selenese 的角度来看,问题是导致页面重新加载的操作是click(),但重新加载实际上会在确认弹出对话框返回 true 后发生。并且waitForXXX()命令应在导致重新加载的操作之后立即启动。
尽管Selenium 文档说必须使用相关的assertXXX( )处理弹出对话框,但我试图评论(1 )。结果是一样的。
我也尝试在(2)处等待ForPageToLoad() ,但这只是......等待(300000000毫秒,显然是默认值,这足以让任何页面重新加载......)
我被困住了,无法弄清楚如何测试这种简单而平凡的行为……我错过了什么?