Watir / Rspec浏览器循环

时间:2013-09-12 20:32:37

标签: ruby rspec watir watir-webdriver

在使用Watir / Rspec的循环中使用多个浏览器需要一些帮助。

  • 我的目标是:
    1. 转到Google.ca
    2. 快速搜索
    3. 关闭浏览器。
    4. 使用其他浏览器循环步骤1-3。

我可以使用Watir来使用它,但不知道如何使用Rspec。

Watir(工作代码):

require 'watir-webdriver'
require 'rspec'

  browsers = [:ff, :chrome]
  browsers.map do |x|
  $browser = Watir::Browser.new x
  $browser.goto('http://www.google.ca')
  $browser.text_field(:id, 'gbqfq').set 'Juventus'
  $browser.send_keys :enter
  $browser.close


end #End loop

Rspec(不工作):

require 'watir-webdriver'
require 'rspec'

  browsers = [:ff, :chrome]
  browsers.map do |x|
  $browser = Watir::Browser.new x
  $browser.goto('http://www.google.ca')

  describe 'loop' do
    it 'does something' do
      $browser.text_field(:id, 'gbqfq').set 'Juventus'
      $browser.send_keys :enter
      $browser.close
    end
  end #End describe
end #End loop

以上代码会发生这种情况:

  • 加载Firefox
  • 访问Google
  • 加载Chrome
  • 访问Google
  • 在Chrome上搜索

似乎当我包含Rspec describe时,循环不能按照我的意图工作。

1 个答案:

答案 0 :(得分:2)

终于弄明白了:)

以下是任何想要进行多次浏览器测试的人的代码,而不为每个浏览器制作不同的规范。

require 'watir-webdriver'
require 'rspec'

      browsers = [:ff, :chrome]
      browsers.map do |x|

        describe 'Browser' do

        before(:all) do
          @browser = Watir::Browser.new x
        end

        it 'goes to Google.ca' do
          @browser.goto('http://www.google.ca')
        end

        it 'searches' do
          @browser.text_field(:id, 'gbqfq').when_present(3).set 'Juventus'
          @browser.send_keys :enter
          sleep 0.5 #roughly takes 0.5s for the images to load. 
        end

        it 'closes browser' do
          @browser.close
        end
      end #end describe
    end #end loop

我认为为了使其正常工作,您需要在describe之后初始化浏览器,而在我describe

之前初始化浏览器之前