2014年5月28日水曜日

CapybaraというかSeleniumで実行スピードを遅くする。

capybaraでスクリプトを実行している時に、デバッグのために、あえて実行スピードを遅くしたい時がある。そんな時の方法

困った時に、よくあるモンキーパッチ。
require 'selenium-webdriver'
module ::Selenium::WebDriver::Chrome
  class Bridge
    @@speed = nil

    def self.speed=(v)
      @@speed = v
    end

    def execute(*args)
      result = raw_execute(*args)['value']
      case @@speed
        when :slow
          sleep 0.1
        when :medium
          sleep 0.2
      end
      result
    end
  end
end

def set_speed(speed)
  begin
    ::Selenium::WebDriver::Chrome::Bridge.speed = speed
  rescue
  end
end
step "Yahooを見に行く" do
  begin
    set_speed(:slow)
    visit("http://yahoo.co.jp")
  end
end
Rspecを使っていたら、spec_helper.rbに書いた方が楽かも。
RSpec.configure do |config|
  set_speed(:slow)
end

0 件のコメント: