我正在尝试使用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.com
和webserver1.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'
非常感谢任何帮助!
答案 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。