我正在尝试将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/

10-16 03:35