首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHPUnit Selenium Xvfb

PHPUnit Selenium Xvfb
EN

Stack Overflow用户
提问于 2016-04-05 21:13:29
回答 1查看 692关注 0票数 2

我试图使用Selenium和Phpunit在Centos服务器上设置功能测试。

当我运行测试时,我在命令行中得到一个错误:

代码语言:javascript
复制
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。根据我的理解,一切都是正确的,然而我正经历着和许多其他人一样的问题,而对他们有效的解决方案似乎并不适用于我。

这是我的设计:

  1. OS:命令行中的Centos 6.5 x86 (没有GUI)
  2. PHP:5.6
  3. Phpunit:3.7,尽管我也尝试过使用5.3
  4. Selenium独立web服务器:2.53,从这里下载,尽管我也尝试过使用2.9
  5. Xvfb系统:xorg-x11-server-Xvfb
  6. 火狐:38.0.1,尽管我也尝试过使用38.7

我还在bash配置文件中将DISPLAY设置为:99

我就是这样建立环境的:

  1. 首先,启动Xvfb系统:/usr/bin/Xvfb :99 -ac -screen 0 1280x1024x24 &
  2. 然后启动Selenium服务器:/usr/bin/java -jar /usr/lib/selenium/selenium-server-standalone-2.53.0.jar &
  3. 我启动了火狐:firefox & (虽然我知道这不是必要的,但以防万一)

这三个进程都在后台运行。

此时,我知道Firefox和X缓冲区都是有效的。我可以运行命令firefox http://www.stackoverflow.com &,然后通过执行import -window root /tmp/buffer_snapshot.png获取缓冲区的快照,这恰好是如下所示:

当然,我在终端上收到了一个警告:Xlib: extension "RANDR" missing on display ":99",但是我无数次地读到这不是一个问题。

总之,问题刚刚开始。

我编写了一个相当简单的功能测试(请注意,除了functional之外,我编写的其他测试都运行得很好,因此这方面的环境似乎配置得很好):

代码语言:javascript
复制
<?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运行测试时,我得到以下错误:

代码语言:javascript
复制
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生成的日志文件,我发现了以下(有趣的)行:

代码语言:javascript
复制
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

[...]

(该文件包含完整的堆栈跟踪转储,以及未指定显示的原始消息)

Xvfb日志文件中没有错误。

在这一点上,我不知道我做错了什么。

有人能帮忙吗?

非常感谢

EN

回答 1

Stack Overflow用户

发布于 2016-04-06 01:40:11

无法连接错误的一个原因是Selenium Server的版本不知道如何使用您安装的Firefox版本。Selenium独立的web服务器2.53是最新的,也是最好的。selenium-firefox-驱动程序也是2.53。火狐版本38已经过时了。我使用selenium 2.53运行firefox 45.0.1。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36437162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档