通过不同的浏览器使用watir-webdriver进行多个并发浏览器测试

所以我在这里的网站上工作,我想一次运行多个浏览器测试。 我的意思是它应该同时执行我的冒烟测试,即firefox和chrome,并报告每个浏览器的结果。 我目前只使用rpsec和watir-webdriver进行测试,但希望自动化其他2个浏览器。 那里有没有现有的gem(我找不到任何gem),如果不是最好的方法来解决这个问题?

你应该尝试WatirGrid

它不会为您完成所有工作,但它会为您提供一次启动多个测试的平台。 您只需启动相同的测试3次更改目标浏览器,网格将处理它们将被执行的位置。

除了watir-webdriver之外,为什么不需要在同一台机器上运行多个浏览器。

ie = Watir::Browser.new :ie firefox = Watir::Browser.new :firefox chrome = Watir::Browser.new :chrome opera = Watir::Browser.new :opera 

如果你有多台机器或虚拟机可以使用, jenkins在答案中。 我的方法类似于Chuck,但我不是通过下拉菜单等提示这些值,而是让Jenkins提示这些值.Jenkins易于设置并可以自动将测试作业分发到任何可用的机器进行测试。

所以,我点击“谷歌搜索测试”并选择“Internet Explorer”…然后我做同样的事情并选择一个不同的浏览器。 各种浏览器中的并发测试,具有HTML /电子邮件输出和出色的日志历史记录。

我也会写更多关于此的内容,但我还在度假!

以下是配置文件的示例(如果不使用Jenkins启动它们,则会分配默认值)。 注意:“|| =”表示“如果为nil,则使用此值。如果不为nil,则使用当前值”。 如果jenkins还没有,我只会设定价值。

 ENV['BROWSER'] ||= "firefox" ENV['ENVIRONMENT'] ||= "qa" ENV['LIMIT'] ||= "10" ENV['DISTRICT'] ||= "any" ENV['TYPE'] ||= "pkg-new" # Not necessary, but added for sanity/cleanliness: $type = ENV['TYPE'].downcase $browser = ENV['BROWSER'].downcase $env = ENV['ENVIRONMENT'].downcase $district = ENV['DISTRICT'].downcase puts "\t** Testing #{$env.upcase} using #{$browser.upcase}... **" 

jenkins的部分非常容易 – 我觉得很容易设置。 您为脚本创建一个变量,无论您命名该变量,变为ENV [“VariableName”] – 并立即可用于您的脚本。

所以我有一个名为“BROWSER”的变量,它由Firefox,IE和Chrome选项下拉设置。 用户没有空间将脚本与自由文本混淆,他们可以随时运行自定义测试。 我的开发/ PM /用户爱我:D。

如果要为测试运行完全相同的测试代码,则需要将浏览器类型外部化为环境变量或YAML文件或某些内容。

Ruby有一些东西可以让处理yaml文件变得非常简单(我需要写一篇关于这个的博客文章),所以你可以在脚本的顶部放一些东西来调用一个方法来获取配置信息,然后相应地设置浏览器类型。

在我的testconfig.yml YAML文件中,我有:

 global: browser: ie #possible values: ie, ff, chrome 

注意我目前没有测试歌剧(市场细分太小)或者它将在可能的值列表中。 评论只是为了让那些可能需要编辑该文件的人生活轻松。

我有一个在readconfig.rb文件中定义的read_config方法,它看起来(部分)是这样的

 require 'yaml' def read_config config = YAML.load_file('testconfig.yml') $browser_type = config['global']['browser'] end 

在我的测试的顶部有这样的代码

 require 'rubygems' require 'readconfig' require 'watir-webdriver' read_config $browser = Watir::Browser.new $browser_type.to_sym 

这样我就可以在每个系统上有一个不同的配置文件(它还设置了许多其他的东西,比如当前的密码(定期更改),要使用的测试环境,以及每个环境的设置,例如测试服务器URL,数据库服务器和名称等。在开发测试时,对配置文件的简单更改允许我运行面向给定浏览器的所有测试。或者如果我想并行运行,我可以使用自己的自定义配置进行系统设置文件,让他们从源代码控制中提取当前脚本,然后针对配置文件中配置的任何浏览器,服务器等运行它们。

对于任何有用的ruby dev来说,这可能是一件很简单的事情,但对于我们任何对ruby来说都很新的人来说,这就像魔术一样,特别是对于我的脚本中的硬编码值以及我可以控制和更改它们的单个地方。