在单独的计算机上使用Selenium JAR和WebDriver运行代码测试

时间:2015-09-04 21:11:56

标签: php selenium phantomjs automated-tests codeception

我正在尝试使用Codeception 1.8和Selenium为somehwat-legacy PHP和JavaScript应用程序设置一个新的测试结构。如果有人不知道Codeception(http://codeception.com/),它有一些运行测试的选项,包括内置的PHP浏览器,但基本上是PHPUnit的增强版本。它有运行单元,功能和验收测试的套件。

我按照"快速入门"中的说明进行操作。 (http://codeception.com/quickstart),并且,PHP浏览器成功运行了一个超级简单的验收测试。我遇到的问题是当我尝试更改配置了这些测试运行方式的YAML文件时 - 我想停止使用PHPBrowser,然后切换到Selenium,这样我就可以编写涉及DOM的端到端样式测试JS。

起初,我遇到了让chromedriver工作的问题 - 实际上我从未这样做过,而且我无法升级我的Codeception版本,因为我在PHP版本中使用的代码库很难设置:5.3.29。但是,我发现这里有一个单独的服务器安装了PhantomJS。

这很重要,因为我无法在运行selenium JAR(文件服务器1)的计算机上访问sudo,也没有安装PhantomJS的计算机(webserver 1)。所以我不能自己安装firefox驱动程序或其他webdriver。

我的问题是:是否可以使用WebDriver在另一台计算机上托管我的Selenium测试?有没有办法在远程机器上使用WebDriver让Selenium运行,或者WebDriver和Selenium JAR必须在同一台机器上?

再补充一点,这两个服务器位于同一主域 - 它们是fileserver1.domain.comwebserver1.domain.com(显然都是假网址)。

以下是我的代码设置的YAML配置文件:

代码主YAML

paths:
    tests: tests
    log: tests/_log
    data: tests/_data
    helpers: tests/_helpers
settings:
    bootstrap: _bootstrap.php
    suite_class: \PHPUnit_Framework_TestSuite
    colors: true
    memory_limit: 1024M
    log: true
modules:
    config:
        Db:
            dsn: ''
            user: ''
            password: ''
            dump: tests/_data/dump.sql

验收测试YAML

# Codeception Test Suite Configuration

    class_name: WebGuy
    modules:
        enabled:
            # - PhpBrowser
            # - Selenium2
            - WebDriver
            - WebHelper
        config:
            WebDriver:
                url: 'https://.../login_logout.php?superuser'
                browser: chrome
                window_size: 1024x768
            # PhpBrowser:
                # url: 'https://.../login_logout.php?superuser'

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

您是否尝试过设置主机和端口参数? https://github.com/Codeception/Codeception/blob/1.8/docs/modules/WebDriver.md

host - Selenium server host (127.0.0.1 by default) port - Selenium server port (4444 by default)

答案 1 :(得分:0)

有没有办法在使用WebDriver托管另一台机器时运行我的Selenium测试?

我认为代码不能这样做,Selenium服务器必须在你的主机上运行,​​我在使用Vagrant之前遇到同样的问题,selenium必须在你的主机上运行,​​这样在运行代码时,你会注意一个弹出的窗口,如Chrome或Firefox我认为......只需确保您的主机是基于GUI的,可以运行浏览器pref。火狐

有没有办法在远程机器上使用WebDriver让Selenium运行,或者WebDriver和Selenium JAR必须在同一台机器上?

您可以在基于GUI的服务器上运行selenium服务器(jar)。然后推送codeception命令成为一个事件。

在推送使用WebDriver / Selenium之前,你应首先运行PhpBrowser,直到基于网络的selenium监听器。

尝试使用2.1的最新版本,我确实在旧版本中遇到了很多问题,例如表单操作以及之前运行的Selenium。