1

我正在使用硒和黄瓜测试网站上的链接。这些链接自然会加载到当前浏览器窗口中。虽然当我运行测试时,它们每次都会在新窗口中打开!即使打开网页 .get 也会打开一个全新的窗口。我在这里想念什么?

到目前为止,我只在 Firefox 中进行测试

环境.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 我也不明白这可能来自哪里。

步骤定义:

When /^I am viewing Google$/ do
if @driver.current_url != "www.google.com"
 @driver.get "www.google.com"
 end
end

重复此代码将加载许多窗口。还有与网站的任何 .click 交互

我最近问了一个与此类似的问题(没有意识到我在重复自己)这里是任何感兴趣的人的链接:

如何使用 selenium-webdriver (ruby) 使用相同的浏览器窗口进行自动化测试?

4

2 回答 2

1

您也可以将其添加到您的 env.rb 文件中:

at_exit do
  if ENV['KEEP_OPEN'] != 'false' || ENV['KEEP_OPEN'] != 'no'
    browser.close
  end
end

真的,你所需要的browser.close只是,其余的只是设置环境,以便在命令行中,如果你想保持它打开,你可以这么说。

此外,您可能在代码中丢失的某个地方打开/初始化了太多浏览器。我必须查看所有内容才能进行调试...但是,我只是想让您知道这可能不是您的 env.rb 文件的问题。

于 2013-06-06T22:32:28.670 回答
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

无法覆盖此文件中定义的所有配置文件选项,您必须编辑此文件。

于 2013-06-06T18:38:29.303 回答