Ruby 窗户开得太多
我正在使用selenium和cucumber在一个网站上测试链接。当然,这些链接将加载到当前浏览器窗口中。虽然当我运行测试时,它们每次都会在一个新窗口中打开!甚至打开一个网页。get也会打开一个全新的窗口。我错过了什么 此外,到目前为止,我只在firefox中进行测试 env.rbRuby 窗户开得太多,ruby,firefox,selenium,cucumber,Ruby,Firefox,Selenium,Cucumber,我正在使用selenium和cucumber在一个网站上测试链接。当然,这些链接将加载到当前浏览器窗口中。虽然当我运行测试时,它们每次都会在一个新窗口中打开!甚至打开一个网页。get也会打开一个全新的窗口。我错过了什么 此外,到目前为止,我只在firefox中进行测试 env.rb require 'Rspec' require 'selenium-webdriver' include Rspec::Expectations #================================
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
重复此代码将加载多个窗口。也可以。单击与网站的交互
我最近问了一个类似于这个问题的问题(我没有意识到我在重复我自己的问题),这里有一个链接供感兴趣的人参考:
为了避免出现多个窗口,您应该编辑yout 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:
无法覆盖此文件中定义的所有配置文件选项,您必须编辑此文件。为了避免出现多个窗口,您应该编辑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:
无法覆盖此文件中定义的所有配置文件选项,您必须编辑此文件。您也可以将其添加到env.rb文件中:
at_exit do
if ENV['KEEP_OPEN'] != 'false' || ENV['KEEP_OPEN'] != 'no'
browser.close
end
end
实际上,您所需要的只是浏览器。关闭,其余的只是设置环境,以便在命令行中,如果您想保持它打开,您可以这样说
此外,您可能正在打开/初始化代码中丢失的太多浏览器。我必须查看所有内容才能进行调试…但是,我想让您知道,您的env.rb文件可能没有问题。您也可以将此添加到您的env.rb文件中:
at_exit do
if ENV['KEEP_OPEN'] != 'false' || ENV['KEEP_OPEN'] != 'no'
browser.close
end
end
实际上,您所需要的只是浏览器。关闭,其余的只是设置环境,以便在命令行中,如果您想保持它打开,您可以这样说
此外,您可能正在打开/初始化代码中丢失的太多浏览器。我必须查看所有这些内容才能进行调试……但是,我想我应该让您知道,您的env.rb文件可能没有问题。缺少的是您的代码。请把它寄出去。缺少的是你的代码。谢谢你,这正是我需要的。谢谢你,这正是我需要的。