我正在使用 PHPUnit & Selenium2 服务器。我正在使用 PageObject 模式。对于一个页面对象,我得到一个 webdriver 的实例并执行必要的功能。
为了让单个浏览器保持运行,我实现了一个粗略的解决方案,我在网上找到了我在静态类中初始化驱动程序的地方:
class SessionHelper {
public static $first;
}
SessionHelper::$first = 0;
然后在我的测试用例类 setup() 方法中;
public function setUp(){
if (SessionHelper::$first == 0 )
{
$this->setHost('localhost');
$this->setPort((int)4444);
$this->setBrowser('firefox');
$this->setBrowserUrl('http://domain.com/lucky/web');
$this->shareSession(TRUE);
$this->prepareSession();
SessionHelper::$first = 1 ;
}
}
通过这种方式,我设法在单个浏览器中执行所有测试。但是,如果一个测试用例失败;假设通过尝试查找不存在的元素,所有其他测试用例都失败并显示消息“未定义索引:browserUrl”。如果我将其更改为在页面中查找已知元素,它可以正常工作。例如,例如;
test_method_1 :如果在此测试失败并显示“未定义索引:browserUrl”后未找到任何元素。
如果 test_method_1 正常,其余的测试将执行,直到另一个测试用例失败。
那么,我收到此错误的原因是什么?当一个测试用例失败时,我的会话会被破坏吗?