我正在做一个PHPUnit驱动的Selenium2测试用例。我正在尝试填写表格。
这是设置:
protected function setUp()
{
$this->setBrowser( 'firefox' );
$this->setBrowserUrl( 'http://my.nice.project/' );
}
通过这个测试用例,我得到一个“ok,green bar”:
public function testLogin()
{
$this->url( 'http://my.nice.project/' );
$element = $this->byTag( 'h5' );
$this->assertEquals( 'Access to the private area', $element->text() );
$element = $this->byCssSelector( 'form input[name="email"]' );
$element->click();
//$this->keys( 'abc' );
}
请注意,->keys( 'abc' )
已注释掉。
为了测试工具链是否正常,我添加了第二个临时测试:
public function testToolchain()
{
$this->url( 'http://example.com/' );
$element = $this->byTag( 'p' );
$this->assertContains( 'illustrative examples in documents', $element->text() );
}
如上所述,我得到:
vagrant@global-functional-tests:/vagrant$ vendor/bin/phpunit
PHPUnit 5.7.20 by Sebastian Bergmann and contributors.
.. 2 / 2 (100%)
Time: 23.02 seconds, Memory: 4.00MB
OK (2 tests, 2 assertions)
工具链正在运行,因为如果我在两个测试中的任何一个中更改了预期的文本,我就会失败。因此,selenium必须启动firefox,控制它,获取页面并探索内容。
当我发送密钥时,使用此测试(这是前一个没有注释的行):
public function testLogin()
{
$this->url( 'http://my.nice.project/' );
$element = $this->byTag( 'h5' );
$this->assertEquals( 'Access to the private area', $element->text() );
$element = $this->byCssSelector( 'form input[name="email"]' );
$element->click();
$this->keys( 'abc' );
}
我的类型有例外:PHPUnit_Extensions_Selenium2TestCase_WebDriverException
=>这是完整的phpunit
输出:
vagrant@global-functional-tests:/vagrant$ vendor/bin/phpunit
PHPUnit 5.7.20 by Sebastian Bergmann and contributors.
.E 2 / 2 (100%)
Time: 24.24 seconds, Memory: 4.00MB
There was 1 error:
1) Bibloos\MarmaladeDoughnut\Tests\NewPrivateZoneTest::testLogin
PHPUnit_Extensions_Selenium2TestCase_WebDriverException: sendKeysToActiveElement
Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'
System info: host: 'global-functional-tests', ip: '127.0.0.1', os.name: 'Linux', os.arch: 'amd64', os.version: '4.4.0-21-generic', java.version: '9-internal'
Driver info: driver.version: RemoteWebDriver
/vagrant/vendor/phpunit/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/Driver.php:165
/vagrant/vendor/phpunit/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/Driver.php:175
/vagrant/vendor/phpunit/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/CommandsHolder.php:100
/vagrant/vendor/phpunit/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase.php:393
/vagrant/tests/NewPrivateZoneTest.php:48
/vagrant/vendor/phpunit/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase.php:348
/vagrant/vendor/phpunit/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase.php:314
ERRORS!
Tests: 2, Assertions: 2, Errors: 1.
问题:
答案 0 :(得分:0)
第一个建议 - 你使用的PHPUnit_Extensions_Selenium2库不是最新的Selenium协议的最新变化(它也不再是Selenium 2 - 目前的Selenium版本是3.4.0),尤其是Firefox中的变化48+和Geckodriver。
所以我建议改为使用facebook/php-webdriver库,因为它更加维护和更新Selenium协议。
你也可以找到有用的lmc-eu/steward项目,它将php-webdriver库集成到PHPUnit中。另请参阅" Getting started"自述文件中的部分,解释了如何设置系统以在不同的浏览器(或Docker)中运行Selenium测试。