19

除了我可以“查看”以“弄清楚”的源代码和测试之外,我在尝试查找有关 Selenium 2 for PHPUnit 的任何信息时遇到了令人沮丧的事情。每个人的最爱似乎都是

https://github.com/sebastianbergmann/phpunit-selenium/blob/master/Tests/Selenium2TestCaseTest.php

...但我肯定不必挖掘数百行源代码来获得简单问题的答案吗?我在哪里可以找到初学者指南、基本文档或任何东西?

4

3 回答 3

32

啊哈时刻到了。将为下一个在这些荒凉混乱的领域中游荡的可怜灵魂发帖。

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(我可能错了)。


以下是我在搜索时发现的一些有用链接:


为了解决我上面的多浏览器问题,仍然可以使用$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 不支持该标记。

于 2013-10-01T03:01:09.523 回答
4

我刚刚经历了同样的过程,并写了这篇文章作为自己和他人的参考:

http://scipilot.org/blog/2013/06/30/re-learning-unit-testing-selenium-2-phpunit-selenium/

听起来你已经回答了我的大部分发现,但至少你会在沮丧中感到不那么孤单!

于 2013-10-04T04:54:13.980 回答
3

PHPUnit Selenium 扩展(包含Selenium2TestCase等)不再是 PHPUnit 项目本身的一部分——它现在是一个独立的扩展,也需要显式安装(即它不是 PHPUnit 发行版的一部分)。但是,即使是单独的扩展,似乎也没有任何文档。

此外,此扩展不再积极开发,并且其部分未与 WebDriver 协议的最新更改保持同步。

但是,要将 Selenium 与 PHPUnit 一起使用,您可以使用基于php-webdriver库的其他工具:

  • Steward将 php-webdriver 直接集成到 PHPUnit,因此您可以直接从测试中控制 Selenium
  • 在 php-webdriver 和 PHPUnit 之上提供 BDD 层的Codeception测试框架
于 2017-04-17T23:36:18.770 回答