【问题标题】:Where the heck is any Selenium 2 documentation for PHPUnit?PHPUnit 的 Selenium 2 文档到底在哪里?
【发布时间】:2013-10-07 00:47:49
【问题描述】:

我很难找到关于 Selenium 2 for PHPUnit 的任何信息,但我可以“查看”以“弄清楚”的源代码和测试除外。每个人的最爱似乎是

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

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

【问题讨论】:

  • 几个月前我也在问自己同样的问题。然后我意识到生命很短暂,无法与许多明显的问题作斗争,并决定我的项目不需要用相同的语言编写 selenium 测试。我切换到 Java,现在我很开心;)
  • 那将是一个很好的建议 :) 但是虽然花了两天时间才弄清楚这个问题,但我对这个包并不太不满意,我可以将它与我的 Phing 集成,这是好的。但是对于一个行业标准的包(至少,分别是 PHPUnit 和 Selenium),开始信息很少。无论如何,现在克服困难:)
  • @seimic - 自从我写了这个问题后,我也有机会使用 Java 问题 - 这要容易得多。不过最终功能相​​同,并且与 Ant 的集成比 Phing 更好。

标签: php selenium-webdriver phpunit functional-testing


【解决方案1】:

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

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 东西;我在下面编译了一些链接来集中我的信息。 Selenium 1 并没有“死”,但它已经过时了。 PHPUnit 仍然使用 Selenium 1 的实现中的很多架构,而 PHPUnit 的 Selenium 2 并不是真的那样,而是某种 Selenium 1++。

因此,没有理由去寻找源代码,只需尝试将 PHPUnit 测试用例与 WebDriver 文档匹配即可。此外,SeleniumTestCase 教程中的一些方法在Selenium2TestCase 中更改了名称,但不用担心,事情仍然是一样的,只是有点混淆了。

您可能会问,“为什么不直接使用SeleniumTestCase?”好吧,似乎对其他浏览器的支持需要 WebDriver,所以如果你想退出 Firefox,你需要Selenium2TestCase(我可能错了)。


以下是我发现的一些有用的链接:


为了解决我上面的多浏览器问题,仍然可以使用SeleniumTestCase 中的静态$browser 模式,但browser 索引已更改为browserName

public static $browsers = array(
    array(
        'name'    => 'Internet Explorer',
        'browserName' => 'iexplore',   // not 'browser'
        'host'    => 'localhost',
        'port'    => 4444,
        'timeout' => 30000,
    ),
};

请注意,如果您使用的是 XML 配置,Phing 不支持 <selenium> 标记。

【讨论】:

【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

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

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

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

    • Steward 将 php-webdriver 直接集成到 PHPUnit,因此您可以直接从测试中控制 Selenium
    • Codeception 测试框架,在 php-webdriver 和 PHPUnit 之上提供 BDD 层

    【讨论】:

      猜你喜欢
      • 2016-08-28
      • 2015-07-31
      • 2011-09-17
      • 1970-01-01
      • 2013-07-13
      • 2012-03-23
      • 1970-01-01
      • 2015-03-16
      • 1970-01-01
      相关资源
      最近更新 更多