【发布时间】:2016-07-26 00:45:34
【问题描述】:
我正在尝试使用 Selenium Web 服务器和 Phpunit 在我的 Centos 服务器上设置功能测试。
当我运行测试时,命令行中出现错误:
PHPUnit_Extensions_Selenium2TestCase_WebDriverException:
Unable to connect to host vmdev-pando-56 on port 7055 after 45000 ms.
Firefox console output: Error: no display specified
我已经进行了三天多的研究,但找不到解决方案。我阅读了很多帖子,包括 SOverflow。据我了解,一切都已正确设置,但我遇到了与许多其他人相同的问题,并且对他们有用的解决方案似乎对我不起作用。
这是我的设置:
- 操作系统:
Centos 6.5 x86在命令行中(无 GUI) - PHP:
5.6 - Phpunit:
3.7,虽然我也尝试过使用5.3 - Selenium 独立网络服务器:
2.53,从here 下载,虽然我也尝试使用2.9 - Xvfb系统:
xorg-x11-server-Xvfb - Firefox:
38.0.1,虽然我也尝试过使用38.7
我还在我的 bash 个人资料中将 DISPLAY 设置为 :99:
这是我设置环境的方法:
- 首先,我启动Xvfb系统:
/usr/bin/Xvfb :99 -ac -screen 0 1280x1024x24 & - 然后我启动 Selenium 服务器:
/usr/bin/java -jar /usr/lib/selenium/selenium-server-standalone-2.53.0.jar & - 我启动 Firefox:
firefox &(虽然我知道这不是必需的,但以防万一)
这三个进程都在后台运行。
此时,我知道 Firefox 和 X 缓冲区都在运行。我可以运行命令firefox http://www.stackoverflow.com &,然后通过执行import -window root /tmp/buffer_snapshot.png 对缓冲区进行快照,这恰好是这样的:
我当然在终端收到了警告:Xlib: extension "RANDR" missing on display ":99",但我读了无数遍,这不是问题。
不管怎样,问题才刚刚开始。
我编写了一个相当简单的功能测试(请注意,我编写的其他测试不是功能测试,它们工作得很好,所以这方面的环境似乎配置正确):
<?php
namespace My\APP\BUNDLE\Tests\Functional\MyTest;
use PHPUnit_Extensions_Selenium2TestCase;
class HelloWorldTest extends PHPUnit_Extensions_Selenium2TestCase {
protected function setUp() {
$this->setBrowser('firefox');
$this->setHost('localhost');
$this->setPort(4444);
$this->setBrowserUrl('http://www.stackoverflow.com');
}
public function testTitle() {
$this->url('/');
$this->assertEquals("1", "1");
}
}
当我通过发出 phpunit HelloWorldTest.php 运行测试时,我收到以下错误:
PHPUnit_Extensions_Selenium2TestCase_WebDriverException:
Unable to connect to host vmdev-pando-56 on port 7055
after 45000 ms. Firefox console output:
Error: no display specified
检查 selenium 生成的日志文件,我发现以下(有趣的)行:
21:55:46.135 INFO - Creating a new session for Capabilities [{browserName=firefox}]
[...]
java.util.concurrent.ExecutionException:
org.openqa.selenium.WebDriverException:
java.lang.reflect.InvocationTargetException
Build info: version: '2.53.0',
revision: '35ae25b',
time: '2016-03-15 17:00:58'
System info: host: 'vmdev-pando-56',
ip: '127.0.0.1',
os.name: 'Linux',
os.arch: 'i386',
os.version: '2.6.32-431.el6.i686',
java.version: '1.7.0_99'
Driver info: driver.version: unknown
[...]
(该文件包含完整的堆栈跟踪转储,以及 no display specified 的原始消息)
Xvfb 日志文件中没有错误。
此时我不知道自己做错了什么。
谁能帮忙?
非常感谢
【问题讨论】:
-
另外,忘了说我在虚拟机(VMWare 7)中运行我的开发环境
标签: php selenium webdriver phpunit xvfb