我正在尝试将PhantomJS用作PHPUnit Selenium测试的浏览器。
我已经将Selenium设置为在网格模式下运行,并使用webdriver启动phantomjs,并将其注册到网格中,如GhostDriver Readme所示。
当我运行硒测试时,它失败并显示未知命令错误-GhostDriver只是不理解PHPUnit在说什么。
[ERROR - 2013-05-12T16:23:06.326Z] RouterReqHand - _handle - Thrown => {
"message": "Request => {\"headers\":{\"Accept\":\"*/*\",\"Connection\":\"Keep-Alive\",\"Content-Length\":\"85\",\"Content-Type\":\"application/x-www-form-urlencoded; charset=utf-8\",\"Host\":\"127.0.0.1:4444\"},\"httpVersion\":\"1.1\",\"method\":\"POST\",\"post\":\"cmd=getNewBrowserSession&1=phantomjs&2=https%3A%2F%2Ftest.testurl.com%2F&\",\"url\":\"/\",\"urlParsed\":{\"anchor\":\"\",\"query\":\"\",\"file\":\"\",\"directory\":\"/\",\"path\":\"/\",\"relative\":\"/\",\"port\":\"\",\"host\":\"\",\"password\":\"\",\"user\":\"\",\"userInfo\":\"\",\"authority\":\"\",\"protocol\":\"\",\"source\":\"/\",\"queryKey\":{},\"chunks\":[\"\"]}}",
"name": "Unknown Command",
"line": 87,
"sourceId": 139810136032448,
"sourceURL": ":/ghostdriver/request_handlers/router_request_handler.js",
"stack": "Unknown Command: Request => {\"headers\":{\"Accept\":\"*/*\",\"Connection\":\"Keep-Alive\",\"Content-Length\":\"85\",\"Content-Type\":\"application/x-www-form-urlencoded; charset=utf-8\",\"Host\":\"127.0.0.1:4444\"},\"httpVersion\":\"1.1\",\"method\":\"POST\",\"post\":\"cmd=getNewBrowserSession&1=phantomjs&2=https%3A%2F%2FFtest.testurl.com%2F&\",\"url\":\"/\",\"urlParsed\":{\"anchor\":\"\",\"query\":\"\",\"file\":\"\",\"directory\":\"/\",\"path\":\"/\",\"relative\":\"/\",\"port\":\"\",\"host\":\"\",\"password\":\"\",\"user\":\"\",\"userInfo\":\"\",\"authority\":\"\",\"protocol\":\"\",\"source\":\"/\",\"queryKey\":{},\"chunks\":[\"\"]}}\n at :/ghostdriver/request_handlers/router_request_handler.js:87",
"stackArray": [
{
"sourceURL": ":/ghostdriver/request_handlers/router_request_handler.js",
"line": 87
}
]
}
在GhostDriver site上问了同样的问题,并以没有答案的方式结束,建议应归咎于PHPUnit。可能是这种情况,但我仍然离完成这项工作还很近。有谁知道如何解决?
最佳答案
看起来您正在使用扩展PHPUnit_Extensions_SeleniumTestCase
的测试类。请改用PHPUnit_Extensions_Selenium2TestCase
。
不幸的是,这还不是故事的结局。换出基类时,与Selenium相关的方法的语法会更改。
注明日期的PHPUnit_Extensions_SeleniumTestCase
类
使用Selenium RC API
不支持Phantom.js作为浏览器
需要“传统”语法as documented here
与在Selenium IDE中生成并借助“ Selenium IDE: PHP Formatters”插件导出的代码配合使用时效果很好。
相比之下,PHPUnit_Extensions_Selenium2TestCase
使用WebDriver API
支持Phantom.js
要求使用一组不同的命令,这些命令没有充分的文档说明-this test case通过示例进行演示,仅此而已
如果不进行大量重写,则无法使用从Selenium IDE导出的代码。
因此,可以通过PhantomJS更快地运行PHPUnit驱动的Selenium测试,但这确实要付出一定的代价。
关于testing - 带有PHPUnit的Ghostdriver,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16509886/