我有一个令人沮丧的时间试图找到关于Selenium 2 for PHPUnit的任何信息,除了源代码和测试我可以“透视”以“搞清楚”。每个人的最爱似乎是
https://github.com/sebastianbergmann/phpunit-selenium/blob/master/Tests/Selenium2TestCaseTest.php
...但是我肯定不需要挖掘数百行来源来获得简单问题的答案吗?我在哪里可以找到初学者指南,基本文档或任何其他内容?
答案 0 :(得分:31)
当 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#版本的命名略有不同。这就是为什么每个人都对the PHPUnit test case感到非常兴奋,因为在你找到webdriver文档中你想要的方法之后,它可以很容易地猜出你在寻找什么。
否则,显然PHPUnit中的大多数其他功能都坚持原始的SeleniumTestCase
内容;我在下面编了几个链接来集中我的信息。硒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
Selenium服务器命令行帮助,到目前为止我发现的最完整的文档:
java -jar selenium-server.jar -h
来自命令行的Chrome网络驱动程序:How do I get chrome working with selenium, using php webdriver?
来自命令行的IE webdriver:Howto start InternetExplorerDriver in PHPUnit tests
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
:< / p>
public static $browsers = array(
array(
'name' => 'Internet Explorer',
'browserName' => 'iexplore', // not 'browser'
'host' => 'localhost',
'port' => 4444,
'timeout' => 30000,
),
};
请注意,如果您使用的是XML配置,则Phing不支持<selenium>
标记。
答案 1 :(得分:4)
我刚刚经历了同样的过程,并写了这篇文章作为我和其他人的参考:
http://scipilot.org/blog/2013/06/30/re-learning-unit-testing-selenium-2-phpunit-selenium/
听起来你已经回答了我的大部分发现,但至少你会感到沮丧不那么孤单!
答案 2 :(得分:3)
PHPUnit Selenium扩展(包含Selenium2TestCase
等)不再是PHPUnit项目本身的一部分 - 它现在是standalone extension,也需要明确安装(即它不是PHPUnit发行版)。但是,即使是单独的扩展,似乎也没有任何文档。
此扩展程序不再是主动开发的,而且部分不是最新的WebDriver协议的最新更改。
要将Selenium与PHPUnit一起使用,您可以使用基于php-webdriver库的其他工具: