39

有人知道如何将 Selenium 2 与 Phpunit 一起使用吗?PHP中是否有任何Selenium 2示例?

4

11 回答 11

19

快速更新: phpunit 现在支持 Selenium 2


在撰写本文时,PHPUnit 不支持 Selenium 2。

来自facebook的php-webdriver允许以优雅的方式从 PHP 调用完整的 WebDriver API。去引用:

大多数客户端要求您首先阅读协议以了解可能的情况,然后研究客户端本身以了解如何调用它。这希望消除后一步。

它通过启动 Selenium 2 服务器来使用,该服务器在localhost:4444/wd/hub.

/usr/bin/java -jar /path/to/selenium-server-standalone-2.7.0.jar

然后运行调用该接口的 PHP 测试代码。例如:

<?php

require '/path/to/php-webdriver/__init__.php';

$webdriver = new WebDriver();

$session = $webdriver->session('opera', array());
$session->open("http://example.com");
$button = $session->element('id', 'my_button_id');
$button->click();
$session->close();

WebDriver API映射到 PHP 方法,将示例中的调用clickelement文档中的 element/click API 调用进行比较。

然后可以将测试代码包装在常规的 phpUnit 测试中。

这不是原生 phpUnit 支持,但它是一种非常强大的方法。

于 2011-10-04T10:14:39.367 回答
8

请查看http://code.google.com/p/php-webdriver-bindings/。这是一个使用 JsonWireProtocol 与 Selenium Webdriver 服务器通信的 PHP 库。这是早期版本,但它可以工作。

于 2011-04-15T11:35:31.837 回答
5

目前(2017 年)我推荐使用php-webdriver,AFAIK 与 Selenium WebDriver 交互的功能最完整的 PHP 语言绑定是什么。

这个库在 2014 年被重写以支持 Selenium 2,它的 API 主要基于官方的 Java WebDriver 绑定。这意味着您还可以利用用 Java 编写的代码示例,因为它们通常可以在 PHP 中简单地遵循。它还以现代 OOP 方式编写,并遵循标准 PSR-4 命名空间和 PSR-2 编码标准。

我会推荐这个库而不是phpunit-selenium - 因为它最初是为 Selenium 1 设计的(尽管它现在支持 Selenium 2)并且它的 API 与 PHPUnit 非常紧密。它也不支持某些 WebDriver 功能,并且与 upcomin W3C WebDriver 规范不是最新的。

另一方面,php-webdriver 是独立的库,但它与 PHPUnit 的集成非常简单 - 或者您可以使用像Steward这样的现有工具,它包括所有 PHPUnit 集成并提供很好的便利层等。允许简单地并行运行多个测试(不需要像paratest这样的其他工具)。

项目主页上还提到了其他测试框架集成选项。

于 2016-08-04T15:22:50.570 回答
3

PHPUnit Selenium 集成代码作为github中的一个单独项目存在,据我所知,它不支持 Selenium 2,因此您的问题的答案是 - 不,您不能将 Selenium 2 与 PHPUnit 一起使用。

但是您可以克隆源代码树并使其与 Selenium 2 一起使用。

于 2010-11-17T18:24:38.417 回答
2

我们为此创建了一个库,希望对您有所帮助。它也使用 JSON Wire 协议,但我们的目标是使其与其他语言的示例兼容,因此语法将非常相似。这是链接:https ://github.com/Nearsoft/PHP-SeleniumClient

如果你喜欢它,分享它,改进它或分叉它:)

问候,马克。

于 2012-05-31T18:42:33.990 回答
1

phpunit webdriver 绑定托管在谷歌代码上。除此之外,我们还需要了解一些事情。

  1. 需要安装 PHPUnit。(通过 PEAR 包或手动下载安装)
  2. 必须下载并安装 Eclipse PDT 等 PHP IDE。
  3. Selenium-Stand-Alone 服务器必须在执行 WebDriver Selenium 测试时运行
于 2011-08-10T10:05:22.263 回答
1

我写了一篇关于如何使用 Selenium 2(Facebook 包装器)的教程,在这里可以找到:

http://testigniter.blogspot.co.uk/2012/01/running-selenium-2-webdriver-using.html

于 2012-08-22T14:38:02.043 回答
1

我推荐使用Menta,这是一个需要WebDriver的 Selenium 2 框架。这两个包都与 PSR-0 兼容,因此您可以将它们与 Composer 一起使用。您可以使用 phpunit.xml 配置 selenium。这里有一个例子

<phpunit bootstrap="tests/bootstrap.php"
         backupGlobals="false" backupStaticAttributes="false"
         strict="true" verbose="true">
    <php>
        <var name="testing.selenium.seleniumServerUrl" value="http://localhost:4444/wd/hub" />
        <var name="testing.selenium.browser" value="firefox" />
        <var name="testing.selenium.windowPosition" value="0,0" />
        <var name="testing.selenium.windowSize" value="1280x1024" />
        <var name="testing.selenium.windowFocus" value="1" />
        <var name="testing.selenium.timeoutImplicitWait" value="10000" />
    </php>
    <testsuites>
        <testsuite name="Integrationstests">
            <directory suffix="Test.php" phpVersion="5.3.0" phpVersionOperator=">=">tests/integration</directory>
        </testsuite>
    </testsuites>
    <logging>
        <log type="junit" target="build/logs/junit.xml"/>
    </logging>
</phpunit>

引导文件从 testing.selenium.* 读取配置变量,因此您可以轻松设置新变量。

<?php

\Menta_ConfigurationPhpUnitVars::addConfigurationFile(__DIR__ . '/../phpunit.xml');

$configuration = \Menta_ConfigurationPhpUnitVars::getInstance();
\Menta_SessionManager::init(
    $configuration->getValue('testing.selenium.seleniumServerUrl'),
    $configuration->getValue('testing.selenium.browser')
);

现在您可以轻松地实现您的测试用例。这里有一个例子

<?php

namespace tests\integration;

use WebDriver\LocatorStrategy;

class TestSearch extends \PHPUnit_Framework_TestCase
{
    public function testGoogle()
    {
        $session = \Menta_SessionManager::getSession();
        $session->open('http://www.google.de');
        $element = $session->element(LocatorStrategy::NAME, 'q');
        $this->assertTrue($element->displayed());
    }
}

Menta 包也有两个演示文件,位于此处

于 2013-06-04T11:16:47.447 回答
1

今天,我们深入了解了 Selenium 和 phpunit。这是可能的,您可以在这里找到一些示例和说明:http: //phpunit.de/manual/current/en/selenium.html

phpunit 的创建者得到了一些很好的 api 示例。通过一些实验并阅读错误消息,您将相处融洽。我自己也没有找到一个很棒的图书馆。

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

最后一个来自 nettuts 的教程可以帮助您了解基础知识:http: //net.tutsplus.com/tutorials/php/how-to-use-selenium-2-with-phpunit/

于 2013-10-09T19:31:31.957 回答
0

我在selenium2php上工作。我有太多用 Selenium IDE 记录的 Selenium1 测试。现在它将 html 测试转换为 Selenium2。实际上,对于 PHPUnit_Extensions_Selenium2TestCase。我将执行更多命令。

于 2013-10-17T04:45:36.397 回答
0

是的,Selenium 2 (WebDriver)而且PHPUnit tests很简单。但是我想给你一个建议,你应该首先尝试Selenium IDE,因为你需要期待selenium command。如果您期望在Selenium command这样的情况下selenium 2 (Webdriver),并且PHPUnit test对您来说会更简单。

你可以在这里尝试selenium IDE教程 ,你可以在这里学习。selenium 2 (Webdriver) and PHPUnit

于 2013-10-04T03:59:45.947 回答