【问题标题】:Ghostdriver with PHPUnit使用 PHPUnit 的 Ghostdriver
【发布时间】:2013-05-06 18:27:06
【问题描述】:

我正在尝试使用 PhantomJS 作为 PHPUnit Selenium 测试的浏览器。

我已将 Selenium 设置为在网格模式下运行,并使用 webdriver 启动 phantomjs,并将其注册到网格中,如 GhostDriver Readme

当我运行 selenium 测试时,它会因未知命令错误而失败 - 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。情况可能是这样,但我仍然没有更接近完成这项工作。有谁知道如何解决它?

【问题讨论】:

    标签: testing phpunit phantomjs ghostdriver


    【解决方案1】:

    看起来您正在使用扩展 PHPUnit_Extensions_SeleniumTestCase 的测试类。请改用PHPUnit_Extensions_Selenium2TestCase

    不幸的是,这并不是故事的结局。当您换出基类时,与 Selenium 相关的方法的语法会发生变化。

    过时的PHPUnit_Extensions_SeleniumTestCase

    相比之下,PHPUnit_Extensions_Selenium2TestCase

    • 使用 WebDriver API
    • 支持 Phantom.js
    • 需要一组不同的命令,这些命令没有很好的记录 - this test case 通过示例进行演示,仅此而已
    • 不适用于从 Selenium IDE 导出的代码,无需大量重写。

    因此可以使用 PhantomJS 更快地运行 PHPUnit 驱动的 Selenium 测试,但这确实是有代价的。

    【讨论】:

    • 谢谢 - 老实说,这不是关于速度,而是关于 Selenium 在过去一年左右不再与 Firefox 一起使用的事实,并且没有迹象表明它已被修复。我绝望地寻找替代品。我想在这个新的 api 中重写测试是前进的方向。谢谢。
    • FWIW,FF 为我工作。我是 Selenium 的新手,上周设置了整个 shebang,所以我的机器上没有遗留的东西。 Firefox 开箱即用,具有 IDE、独立服务器、网格节点……甚至在 Windows 主机上;)
    • 是的,但是 Firefox 一直存在问题和“无法访问死对象”错误。该页面非常活跃,JS 到处创建/替换元素。自 Firefox 15 以来,我无法通过单个 webdriver 测试而不再因此而死。不过,这不是主题。
    猜你喜欢
    • 2012-12-16
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 2014-10-24
    • 2015-03-16
    • 1970-01-01
    • 1970-01-01
    • 2013-03-20
    相关资源
    最近更新 更多