除了我可以“查看”以“弄清楚”的源代码和测试之外,我在尝试查找有关 Selenium 2 for PHPUnit 的任何信息时遇到了令人沮丧的事情。每个人的最爱似乎都是
https://github.com/sebastianbergmann/phpunit-selenium/blob/master/Tests/Selenium2TestCaseTest.php
...但我肯定不必挖掘数百行源代码来获得简单问题的答案吗?我在哪里可以找到初学者指南、基本文档或任何东西?
除了我可以“查看”以“弄清楚”的源代码和测试之外,我在尝试查找有关 Selenium 2 for PHPUnit 的任何信息时遇到了令人沮丧的事情。每个人的最爱似乎都是
https://github.com/sebastianbergmann/phpunit-selenium/blob/master/Tests/Selenium2TestCaseTest.php
...但我肯定不必挖掘数百行源代码来获得简单问题的答案吗?我在哪里可以找到初学者指南、基本文档或任何东西?
啊哈时刻到了。将为下一个在这些荒凉混乱的领域中游荡的可怜灵魂发帖。
当Selenium说“Selenium 2”时,他们喜欢说“Selenium 2 = Selenium server + WebDriver”。
PHPUnit 人的诀窍是 WebDriver 部分,这在 PHPUnit 中并不完全。Selenium 已经用其他几种语言编写了 WebDrivers,还有一些用于 PHP 的第三方驱动程序,因为我现在的目标是 PHPUnit,所以我没有尝试过。WebDriver 基本上是一种在 DOM 中运行并抓取元素的方式。在http://docs.seleniumhq.org/docs/03_webdriver.jsp有一个很好的概要。
当PHPUnit说“Selenium 2”时,他们的意思是他们已经编写了在 WebDriver 中完成大部分工作的类,但他们不是称它为 WebDriver,而是称它为 Selenium 2。
由于 PHPUnit 的自制版本,它们的方法命名与 Java 或 C# 版本略有不同。这就是为什么每个人都对 PHPUnit 测试用例如此兴奋的原因,因为在 webdriver 文档中找到所需的方法后,它可以很容易地猜出您在寻找什么。
否则,显然 PHPUnit 中的大多数其他功能都坚持原来的SeleniumTestCase
东西。我在下面编译了一些链接来集中我的信息。Selenium 1 并没有“死”,但它已经过时了。PHPUnit 仍然使用 Selenium 1 的实现中的很多架构,而 PHPUnit 的 Selenium 2 并不是真正的那样,而是某种 Selenium 1++。
因此,没有理由去寻找源代码,只需尝试将 PHPUnit 测试用例与 WebDriver 文档匹配即可。此外,教程中的一些方法SeleniumTestCase
已经更改了名称Selenium2TestCase
,但不要担心,事情仍然是一样的,只是有点混淆了。
你可能会问,“为什么不直接使用SeleniumTestCase
?” 好吧,似乎对其他浏览器的支持需要 WebDriver,所以如果你想退出 Firefox,你需要Selenium2TestCase
(我可能错了)。
以下是我在搜索时发现的一些有用链接:
Selenium 服务器命令行选项,16-06-2013,不完整,缺少诸如-singleWindow
:http ://eswarg.blogspot.com/2013/06/selenium-server-commandline-options.html
更多命令行选项,4 岁:http ://www.grails.org/Selenium+RC+Configuration
Selenium 服务器命令行帮助,迄今为止我找到的最完整的文档:
java -jar selenium-server.jar -h
命令行中的 Chrome webdriver: 如何使用 php webdriver 让 chrome 与 selenium 一起工作?
命令行中的 IE webdriver:如何在 PHPUnit 测试中启动 InternetExplorerDriver
Selenium 中多个浏览器的 PHPUnit 配置 XML http://phpunit.de/manual/3.7/en/appendixes.configuration.html#appendixes.configuration.selenium-rc
类文档Selenium2TestCase
(!)http://apigen.juzna.cz/doc/sebastianbergmann/phpunit-selenium/class-PHPUnit_Extensions_Selenium2TestCase.html
当然,还有神秘的 PHPUnit Selenium 文档: http: //phpunit.de/manual/3.7/en/selenium.html
为了解决我上面的多浏览器问题,仍然可以使用$browser
来自 的静态模式SeleniumTestCase
,但browser
索引已更改为browserName
:
public static $browsers = array(
array(
'name' => 'Internet Explorer',
'browserName' => 'iexplore', // not 'browser'
'host' => 'localhost',
'port' => 4444,
'timeout' => 30000,
),
};
<selenium>
请注意,如果您使用 XML 配置,Phing 不支持该标记。
我刚刚经历了同样的过程,并写了这篇文章作为自己和他人的参考:
http://scipilot.org/blog/2013/06/30/re-learning-unit-testing-selenium-2-phpunit-selenium/
听起来你已经回答了我的大部分发现,但至少你会在沮丧中感到不那么孤单!
PHPUnit Selenium 扩展(包含Selenium2TestCase
等)不再是 PHPUnit 项目本身的一部分——它现在是一个独立的扩展,也需要显式安装(即它不是 PHPUnit 发行版的一部分)。但是,即使是单独的扩展,似乎也没有任何文档。
此外,此扩展不再积极开发,并且其部分未与 WebDriver 协议的最新更改保持同步。
但是,要将 Selenium 与 PHPUnit 一起使用,您可以使用基于php-webdriver库的其他工具: