watir-webdriver 不断打开多个浏览器
Watir-webdriver keeps opening multiple browsers
你好 Whosebug 成员,
我一直在网站(以及网络的其余部分)中搜索这个问题的答案,但我所有的搜索查询都返回了 Watir 的强大功能......我似乎是少数人之一运行正在解决这个特殊问题。我希望有人能为我提供一个简单的答案:)
我正在从事网站测试自动化方面的工作。当前测试集写成Cucumber/Ruby/Selenium-Webdriver/Capybara。我个人对结合 Cucumber 和 Ruby 切换到 Watir-Webdriver 很感兴趣,但我正在努力解决以下问题:
每次我 运行 我的黄瓜测试,Watir 打开的不是一个,而是两个浏览器屏幕。它似乎想要启动一个空白屏幕(它只是转到我配置为默认的站点),以及另一个执行实际测试步骤的浏览器屏幕。
请记住,我对此很陌生,只是在遵循初学者教程时遇到了这个问题。目前还没有什么特别的。
在我的 'Support/env.rb' 文件中,我有以下内容:
require "cucumber"
require 'watir-webdriver'
app_host = ENV['apphost']
Before do
@browser = Watir::Browser.start app_host, :firefox
end
Before do |scenario|
@scenario_tag = scenario.source_tag_names
@browser.cookies.clear
end
at_exit do
@browser.close
end
我的步骤文件中的第一位(GoogleSearch.rb——是的,就是这么基础):
require_relative "../support/env"
Given(/^that I have gone to the Google page$/) do
@browser.goto 'http://www.google.com'
end
现在,当我 运行 这个测试时,我希望只启动一个浏览器。但是,自动化会启动两个浏览器屏幕。一个只是在后台什么都不做,另一个包含测试步骤。
同样,我现在已经搜索了一段时间(我通常很擅长),但我没有在任何地方找到问题的答案。我让它工作的唯一方法是从我的步骤文件中的一个步骤开始,启动浏览器(而不是在 env.rb 文件中执行此操作)。但是我不想每次都打开浏览器开始测试..
非常感谢任何帮助。如果需要我提供更多信息,我会尽快更新。
提前致谢!
问题是 env.rb
被加载了两次:
- 当运行使用
cucumber
命令 时自动包含
- 当调用行
require_relative "../support/env"
. 时,它第二次包含在 GoogleSearch.rb
中
因此,每个挂钩都被注册了两次。换句话说,Cucumber 在每个场景之前看到 运行 的钩子:
Before do
@browser = Watir::Browser.start app_host, :firefox
end
Before do |scenario|
@scenario_tag = scenario.source_tag_names
@browser.cookies.clear
end
Before do
@browser = Watir::Browser.start app_host, :firefox
end
Before do |scenario|
@scenario_tag = scenario.source_tag_names
@browser.cookies.clear
end
如您所见,Watir::Browser.start
被调用两次导致两个浏览器。第一个未使用,因为第二次调用使用相同的变量。
要解决此问题,只需删除 require_relative "../support/env"
行即可。
请注意,这只会解决为每个场景打开两个浏览器的问题。您会注意到您仍然会为每个场景获得一个新的浏览器,并且只有最后一个浏览器被关闭。如果你只想要一个浏览器适用于所有场景,你应该看看 global hooks.
你好 Whosebug 成员,
我一直在网站(以及网络的其余部分)中搜索这个问题的答案,但我所有的搜索查询都返回了 Watir 的强大功能......我似乎是少数人之一运行正在解决这个特殊问题。我希望有人能为我提供一个简单的答案:)
我正在从事网站测试自动化方面的工作。当前测试集写成Cucumber/Ruby/Selenium-Webdriver/Capybara。我个人对结合 Cucumber 和 Ruby 切换到 Watir-Webdriver 很感兴趣,但我正在努力解决以下问题:
每次我 运行 我的黄瓜测试,Watir 打开的不是一个,而是两个浏览器屏幕。它似乎想要启动一个空白屏幕(它只是转到我配置为默认的站点),以及另一个执行实际测试步骤的浏览器屏幕。
请记住,我对此很陌生,只是在遵循初学者教程时遇到了这个问题。目前还没有什么特别的。
在我的 'Support/env.rb' 文件中,我有以下内容:
require "cucumber"
require 'watir-webdriver'
app_host = ENV['apphost']
Before do
@browser = Watir::Browser.start app_host, :firefox
end
Before do |scenario|
@scenario_tag = scenario.source_tag_names
@browser.cookies.clear
end
at_exit do
@browser.close
end
我的步骤文件中的第一位(GoogleSearch.rb——是的,就是这么基础):
require_relative "../support/env"
Given(/^that I have gone to the Google page$/) do
@browser.goto 'http://www.google.com'
end
现在,当我 运行 这个测试时,我希望只启动一个浏览器。但是,自动化会启动两个浏览器屏幕。一个只是在后台什么都不做,另一个包含测试步骤。
同样,我现在已经搜索了一段时间(我通常很擅长),但我没有在任何地方找到问题的答案。我让它工作的唯一方法是从我的步骤文件中的一个步骤开始,启动浏览器(而不是在 env.rb 文件中执行此操作)。但是我不想每次都打开浏览器开始测试..
非常感谢任何帮助。如果需要我提供更多信息,我会尽快更新。
提前致谢!
问题是 env.rb
被加载了两次:
- 当运行使用
cucumber
命令 时自动包含
- 当调用行
require_relative "../support/env"
. 时,它第二次包含在
GoogleSearch.rb
中
因此,每个挂钩都被注册了两次。换句话说,Cucumber 在每个场景之前看到 运行 的钩子:
Before do
@browser = Watir::Browser.start app_host, :firefox
end
Before do |scenario|
@scenario_tag = scenario.source_tag_names
@browser.cookies.clear
end
Before do
@browser = Watir::Browser.start app_host, :firefox
end
Before do |scenario|
@scenario_tag = scenario.source_tag_names
@browser.cookies.clear
end
如您所见,Watir::Browser.start
被调用两次导致两个浏览器。第一个未使用,因为第二次调用使用相同的变量。
要解决此问题,只需删除 require_relative "../support/env"
行即可。
请注意,这只会解决为每个场景打开两个浏览器的问题。您会注意到您仍然会为每个场景获得一个新的浏览器,并且只有最后一个浏览器被关闭。如果你只想要一个浏览器适用于所有场景,你应该看看 global hooks.