任何人都知道如何将Selenium 2与Phpunit一起使用? PHP中是否有任何Selenium 2样本?
答案 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绑定托管在谷歌代码上。除此之外我们还需要了解一些事情。
答案 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 test
和selenium IDE
会更加简单。
您可以在here上尝试selenium 2 (Webdriver) and PHPUnit
教程,然后在here了解{{1}}。
答案 10 :(得分:0)
我在selenium2php工作。我用Selenium IDE记录的Selenium1测试太多了。现在它将html测试转换为Selenium2。实际上,对于PHPUnit_Extensions_Selenium2TestCase。我将实现更多命令。