Selenium 2(WebDriver)和Phpunit?

时间:2010-11-17 16:19:14

标签: php selenium phpunit selenium-webdriver

任何人都知道如何将Selenium 2与Phpunit一起使用? PHP中是否有任何Selenium 2样本?

11 个答案:

答案 0 :(得分:19)

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


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

来自php-webdriver

facebook允许以优雅的方式从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方法,比较示例中click上的element与文档中的元素/单击API调用。

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

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

答案 1 :(得分:8)

请查看http://code.google.com/p/php-webdriver-bindings/。这是使用JsonWireProtocol与Selenium Webdriver服务器通信的PHP库。这是早期版本,但它确实有效。

答案 2 :(得分: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 specification保持同步。

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

project homepage上还提到了其他测试框架集成选项。

答案 3 :(得分:3)

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

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

答案 4 :(得分:2)

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

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

问候,马克。

答案 5 :(得分:1)

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

  1. 需要安装PHPUnit。 (通过PEAR包或手动下载和安装)
  2. 必须下载并安装PHP IDE,例如Eclipse PDT。
  3. 执行WebDriver Selenium测试时,必须运行Selenium-Stand-Alone服务器

答案 6 :(得分:1)

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

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

答案 7 :(得分: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>

bootstrap文件从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 Package还有两个演示文件,位于here

答案 8 :(得分: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/

答案 9 :(得分:0)

是的,Selenium 2 (WebDriver)PHPUnit tests很简单。但是,我想给你一些建议:第一次你应该尝试Selenium IDE,因为你需要selenium command。如果您希望Selenium command selenium 2 (Webdriver),那么PHPUnit testselenium IDE会更加简单。

您可以在here上尝试selenium 2 (Webdriver) and PHPUnit教程,然后在here了解{{1}}。

答案 10 :(得分:0)

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