我正在使用硒和黄瓜测试网站上的链接。当然,这些链接将加载到当前浏览器窗口中。虽然当我进行测试时,他们每次都会在新窗口中打开!即使打开一个网页.get也会打开一个全新的窗口。我在这里缺少什么?
此外,我目前只在firefox中进行测试
env.rb
require 'Rspec'
require 'selenium-webdriver'
include Rspec::Expectations
#=======================================================================================
Before do
@driver = Selenium::WebDriver.for :firefox
@accept_next_alert = true
@driver.manage.timeouts.implicit_wait = 30
@verification_errors = []
end
After do
#@driver.quit
@verification_errors.should == []
end
#=======================================================================================
wait = Selenium::WebDriver::Wait.new(:timeout => 25)
def element_present?(how, what)
@driver.find_element(how, what)
true
rescue Selenium::WebDriver::Error::NoSuchElementError
false
end
def alert_present?()
@driver.switch_to.alert
true
rescue Selenium::WebDriver::Error::NoAlertPresentError
false
end
def verify(&blk)
yield
rescue ExpectationNotMetError => ex
@verification_errors << ex
end
def close_alert_and_get_its_text(how, what)
alert = @driver.switch_to().alert()
alert_text = alert.text
if (@accept_next_alert) then
alert.accept()
else
alert.dismiss()
end
alert_text
ensure
@accept_next_alert = true
end
我意识到它正在打开一个奇怪的firefox浏览器。我已经更改了firefox中的设置以在新选项卡中打开窗口(基于另一个问题)并且我意识到selenium正在打开具有所有旧设置的firefox实例。我没有安装多个版本的firefox我不明白这可能来自哪里。
步骤def:
When /^I am viewing Google$/ do
if @driver.current_url != "www.google.com"
@driver.get "www.google.com"
end
end
重复此代码将加载许多窗口。也可以与网站进行任何.click交互
我最近问了一个类似于这个的问题(没有意识到我有点重复自己)这里是任何感兴趣的人的链接:
How to use same browser window for automated test using selenium-webdriver (ruby)?
答案 0 :(得分:1)
您也可以将它添加到您的env.rb文件中:
at_exit do
if ENV['KEEP_OPEN'] != 'false' || ENV['KEEP_OPEN'] != 'no'
browser.close
end
end
真的,你需要的只是browser.close
,其余的只是设置环境,以便在命令行中,如果你想保持它打开,你可以这样说。
此外,您可能正在打开/初始化代码中丢失的太多浏览器。我必须看到所有这些都能够调试......但是,我想让你知道它可能不是你的env.rb文件的问题。
答案 1 :(得分:0)
为了避免多个窗口,你应该编辑你的firefox webdriver的prefs.json
你应该在这里找到这个文件: /usr/lib64/ruby/gems/1.9.1/gems/selenium-webdriver-2.29.0/lib/selenium/webdriver/firefox/extension/prefs.json
您需要使用以下内容编辑该行:
"browser.link.open_newwindow": 2
取代您想要的值1,2或3:http://kb.mozillazine.org/Browser.link.open_newwindow
此文件中定义的所有配置文件选项都无法覆盖,您必须编辑此文件。