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驱动程序也可以运行.
如果没有 Chrome 驱动程序,Selenium 无法启动 Chrome(因为 Chrome 不再是 webkit 的一部分),并且 Selenium 默认情况下只能启动 webkit 浏览器。您应该能够启动 Firefox(如果已安装),而无需任何其他二进制文件。
要让 Chrome 正常工作,您需要执行以下操作:
代码中可能还有其他一些问题,但我觉得评论在这方面提供了足够的反馈。
您可以从以下位置下载驱动程序:https ://sites.google.com/a/chromium.org/chromedriver/downloads
更新
IE 也需要驱动程序:
Internet Explorer 驱动程序服务器 如果您想使用 WebDriver InternetExplorerDriver 的最新和最强大的功能,这是必需的。请确保它在您的 $PATH(或 Windows 上的 %PATH%)上可用,以便 IE 驱动程序按预期工作。
下载适用于(推荐)32 位 Windows IE或64 位 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。