use*_*413 5 php phpunit selenium-webdriver
我正在使用PHPUnit和Selenium2服务器.我正在使用PageObject模式.对于页面对象,我获得了webdriver的实例并执行必要的功能.
为了保持单个浏览器运行,我实现了一个粗略的解决方案,我在网络中找到了我在静态类中初始化驱动程序:
class SessionHelper {
public static $first;
}
SessionHelper::$first = 0;
Run Code Online (Sandbox Code Playgroud)
然后在我的测试用例类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 ;
}
}
Run Code Online (Sandbox Code Playgroud)
这样我就可以在一个浏览器中执行所有测试.但是,如果一个测试用例失败; 通过尝试查找不存在的元素,所有其他测试用例都失败并显示消息"Undefined index:browserUrl".如果我更改它以在页面中查找已知元素,它可以正常工作.所以例如;
test_method_1:如果在此测试失败后未找到任何元素,则显示"Undefined index:browserUrl".
如果test_method_1正常,则其他测试将执行,直到另一个测试用例失败.
那么,我可能会得到这个错误的原因是什么?当一个测试用例失败时,我的会话会被销毁吗?
当一个测试用例失败时,您的会话将被破坏:
如果测试不成功(失败或不完整),会话将被重置;用户可以通过重置 cookie 或从被测应用程序注销(使用 TeaDown() 方法)来避免测试之间的交互
来自第 17 章 PHPUnit 和 Selenium(底部)
方法onNotSuccessfulTest用标志标记会话,该标志将会话设置为空。在下一次测试运行中,PHPUnit 调用prepareSession(),但参数为空。这就是SessionStrategy_Shared中出现错误“未定义索引”的原因。
你可以写你的onNotSuccessfulTest方法:
public function onNotSuccessfulTest(Exception $e){
throw $e;
}
Run Code Online (Sandbox Code Playgroud)
有了它,会话就不会被破坏。