CFSelenium"无法启动新的浏览器会话"

ear*_*efl 10 coldfusion selenium coldfusion-10

我在使用CFSelenium/TestBox时遇到了问题.我正在使用Windows 7 VM,Coldfusion 10开发.我从https://github.com/teamcfadvance/CFSelenium/archive/master.zip下载了一份新的cfselenium副本.

我的文件结构是

wwwroot |
  cfselenium |
    Selenium-RC |
        Selenium-server-standalone-2.46.0.jar
    Selenium.cfc
    Server.cfc
  Testbox |
    … various testbox files
   MySite |
    Tests|
        Specs |
            … my test files
            seleniumtest.cfc
        Application.cfc
        Index.cfm
Run Code Online (Sandbox Code Playgroud)

MySite/Test/Application.cfc包括testbox /和cfselenium /的映射.

测试套件seleniumtest.cfc扩展了testbox.system.BaseSpec,其beforeAll()和afterAll()函数实例化selenium,启动它并将其拆除:

component extends="testbox.system.BaseSpec" {

function beforeAll( ){
        // create Selenium class
        selenium = new cfselenium.Selenium();
        // Start it up.
        selenium.start( "mysite", "*chrome" );
    }

    // executes after all suites+specs in the run() method
    function afterAll(){
        selenium.stop();
        selenium.stopServer();
    }

function run( testResults, testBox ){
    describe('selenium', function(){
        // hello world equivalent
        describe('equality', function(){
            it('true should be true', function(){
                expect( true ).toBe(true);
            });
        });
    });
}
}
Run Code Online (Sandbox Code Playgroud)

新行为:将以下内容传递给selenium.start()时:

selenium.start( "https://www.google.com", "*googlechrome" );
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Selenium RC的响应无效:无法启动新的浏览器会话:java.lang.RuntimeException:org.openqa.selenium.os.WindowsRegistryException:管理注册表时出现问题,操作系统版本'6.1',regVersion1 = false构建信息:版本:'2.42.2',修订版:'6a6995d',时间:'2014-06-03 17:42:03'系统信息:主机:'myhostname',ip:'myvm_ip_address',os.name:'Windows 7 ',os.arch:'amd64',os.version:'6.1',java.version:'1.7.0_67'驱动程序信息:driver.version:unknown

对于我传递给selenium.start()的所有其他网址或浏览器版本(我试过'*chrome','*firefox','*iexplore','*iexploreproxy'),我收到以下错误:

Selenium RC的响应无效:无法启动新的浏览器会话:org.openqa.selenium.server.RemoteCommandException:启动浏览器时出错

从堆栈跟踪中,我可以看到它在selenium.DoCommand()中失败.

从另一篇SO帖子中可以看出,如果当前正在使用4444端口,它可能会干扰selenium-RC服务器.我重新启动了我的VM并通过运行验证了端口4444没有被使用

Netstat –an | find “4444”
Run Code Online (Sandbox Code Playgroud)

再次运行测试套件后,使用相同的命令运行netstat显示

TCP    0.0.0.0:4444           0.0.0.0:0              LISTENING
TCP    127.0.0.1:4444         127.0.0.1:49209        ESTABLISHED
TCP    127.0.0.1:49209        127.0.0.1:4444         ESTABLISHED
TCP    [::]:4444              [::]:0                 LISTENING
TCP    [::1]:4444             [::1]:49208            ESTABLISHED
TCP    [::1]:49208            [::1]:4444             ESTABLISHED
Run Code Online (Sandbox Code Playgroud)

从查看cf日志,我看到以下内容:

2016年4月29日上午09:44:23信息[ajp-bio-8012-exec-3] - 启动HTTP请求{URL =' http:// localhost:4444/selenium-server/driver / ',method ='POST "}

在wwwroot下应该有一个selenium-server文件夹吗?那是webdriver吗?

编辑:Per Dan的回答,我从http://chromedriver.storage.googleapis.com/index.html?path=2.21/下载了chromedriver_win32 ,解压缩到C:\ Program Files(x86)\ chromedriver,添加到我的PATH,并重新启动VM.将驱动程序从'*googlechrome'更改为'*chrome'后,它似乎正常工作......我能够成功运行以下测试:

function testIncludes(){
      selenium.open("https://www.google.com");
      $assert.isEqual("Google", selenium.getTitle());
 }
Run Code Online (Sandbox Code Playgroud)

所以我想我们正在这里.

似乎IE驱动程序也可以运行.

Dan*_*bin 3

如果没有 Chrome 驱动程序,Selenium 无法启动 Chrome(因为 Chrome 不再是 webkit 的一部分),并且 Selenium 默认情况下只能启动 webkit 浏览器。您应该能够启动 Firefox(如果已安装),而无需任何其他二进制文件。

要让 Chrome 正常工作,您需要执行以下操作:

  1. 下载 Chrome 驱动程序 bin。
  2. 将其添加到您的路径中。
  3. Selenium 应该能够启动浏览器。

代码中可能还有其他一些问题,但我觉得评论在这方面提供了足够的反馈。

您可以从以下位置下载驱动程序:https ://sites.google.com/a/chromium.org/chromedriver/downloads

更新

IE 也需要驱动程序:

Internet Explorer 驱动程序服务器 如果您想使用 WebDriver InternetExplorerDriver 的最新和最强大的功能,这是必需的。请确保它在您的 $PATH(或 Windows 上的 %PATH%)上可用,以便 IE 驱动程序按预期工作。

下载适用于(推荐)32 位 Windows IE64 位 Windows IE的版本 2.53.0

以上内容来自:http://www.seleniumhq.org/download/关于驱动 windows 的内容。看来带有浏览器的主机需要运行专门针对 IE 的 Selenium Web Driver

Firefox 也发布了自己的驱动程序:

Firefox 驱动程序包含在可下载的 selenium-server-stanalone.jar 中。该驱动程序采用 xpi(firefox 扩展)的形式,当您启动 FirefoxDriver 的新实例时,该驱动程序会添加到 Firefox 配置文件中。

更多详情可在这找到。它的操作类似于 Chrome 和 IE 驱动程序。需要意识到的重要一点是,因为测试是在一台主机上运行的,而浏览器距离执行测试的位置很远,所以您可能还需要查看 Selenium Grid。