在 vagrant 虚拟机上的 symfony 3 中使用 behat 和 mink 进行 Selenium 测试

Selenium test with behat and mink in symfony 3 on vagrant virtual machine

我有 symfony 3.2.6 应用程序。我有一些按钮可以进行 ajax 调用,所以我需要用 selenium 测试它们。我安装并配置了 behat 和 mink。使用没有 javascript 的标准功能测试,一切正常。 我的上下文 class 扩展了 MinkContext。 我的功能文件在测试之上有 @javascript 标签。在我的 /var/www/selenium 文件夹中的虚拟机中,我使用此命令 运行 selenium 服务器:

DISPLAY=:1 xvfb-run java -jar selenium-server-standalone-3.3.1.jar

这是我的behat.yml

extensions:
    Behat\Symfony2Extension: ~
    Behat\MinkExtension:
        goutte: ~
        selenium2:
            wd_host: http://myapp.dev:4444/wd/hub
        base_url: http://myapp.dev
        javascript_session: selenium2
        browser_name: firefox

当我运行

php vendor/bin/behat --tags @javascript

我收到这个错误: 无法打开连接:在 PATH 中找不到 firefox 二进制版本“9” 构建信息:版本:“3.3.1”,修订版:“5234b32”

如果我更改 browser_name: safari 我会得到这个: 无法打开连接:最匹配的驱动程序提供者 org.openqa.selenium.htmlunit.HtmlUnitDriver 无法为功能创建新的驱动程序实例 [{deviceType=tablet, selenium-version=2.31.0, marionette=false, browserVersion=9 , browser=firefox, name=Behat 功能套件, browserName=safari, deviceOrientation=portrait, ignoreZoomSetting=false, version=9, platform=ANY, tags=[myapp.puphpet, PHP 7.0.18]} ]

我安装了 xorg-x11-server-Xvfb、java-1.8.0-openjdk。x86_64、http://selenium-release.storage.googleapis.com/3.3/selenium-server-standalone-3.3.1.jar 和 firefox。

我错过了什么步骤吗?

编辑:

我运行这个命令:

yum -y install firefox Xvfb libXfont Xorg

还有这个:

yum -y groupinstall "X Window System" "Desktop" "Fonts" "General Purpose Desktop"

我下载了 selenium 2.53.1。如果我 运行 startx 我得到这个错误:

(gnome-panel:15453): Gtk-WARNING **: A floating object was finalized. This means that someone called g_object_unref() on an object that had only a floating reference; the initial floating reference is not owned by anyone and must be removed with g_object_ref_sink().

当我运行

nohup java -jar selenium-server-standalone-2.53.1.jar 

我明白了

nohup: ignoring input and appending output to `nohup.out'

如果我运行

DISPLAY=:1 xvfb-run java -jar selenium-server-standalone-2.53.1.jar

我明白了

Driver provider org.openqa.selenium.safari.SafariDriver registration is skipped: registration capabilities Capabilities [{browserName=safari, version=, platform=MAC}] does not match the current platform LINUX 09:22:37.189 INFO - Driver class not found: org.openqa.selenium.htmlunit.HtmlUnitDriver 09:22:37.190 INFO - Driver provider org.openqa.selenium.htmlunit.HtmlUnitDriver is not registered RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub 09:25:11.183 INFO - Selenium Server is up and running

我尝试使用 ff 52.1.0-2、45.8.0-2 和 45.7.0-2。

如果我 运行 在 selenium 服务器处于 运行ning 时进行测试,我会得到

Could not open connection: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. Firefox console output:

您需要使用JAR 2.53版本,详情请看我的文章: https://alvinbunk.wordpress.com/2016/08/03/using-mink-to-perform-functional-tests-in-symfony3-framework/

较旧的 JAR 在 Linux 上支持较旧版本的 FireFox。 这是您需要的 2.53.1 JAR 的 link: https://selenium-release.storage.googleapis.com/2.53/selenium-server-standalone-2.53.1.jar


根据评论编辑 #2

确保你 运行 在另一个控制台中这样做:

export DISPLAY=:1

这是因为你是运行宁:

DISPLAY=:1 xvfb-run java -jar selenium-server-standalone-2.53.1.jar