Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 窗户开得太多_Ruby_Firefox_Selenium_Cucumber - Fatal编程技术网

Ruby 窗户开得太多

Ruby 窗户开得太多,ruby,firefox,selenium,cucumber,Ruby,Firefox,Selenium,Cucumber,我正在使用selenium和cucumber在一个网站上测试链接。当然,这些链接将加载到当前浏览器窗口中。虽然当我运行测试时,它们每次都会在一个新窗口中打开!甚至打开一个网页。get也会打开一个全新的窗口。我错过了什么 此外,到目前为止,我只在firefox中进行测试 env.rb require 'Rspec' require 'selenium-webdriver' include Rspec::Expectations #================================

我正在使用selenium和cucumber在一个网站上测试链接。当然,这些链接将加载到当前浏览器窗口中。虽然当我运行测试时,它们每次都会在一个新窗口中打开!甚至打开一个网页。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
重复此代码将加载多个窗口。也可以。单击与网站的交互

我最近问了一个类似于这个问题的问题(我没有意识到我在重复我自己的问题),这里有一个链接供感兴趣的人参考:


为了避免出现多个窗口,您应该编辑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文件可能没有问题。

缺少的是您的代码。请把它寄出去。缺少的是你的代码。谢谢你,这正是我需要的。谢谢你,这正是我需要的。