mla*_*erg 16 ruby selenium cucumber capybara
默认情况下,Selenium在我使用Cucumber定义的场景中尽可能快地运行.我想将它设置为以较低的速度运行,因此我能够捕获该过程的视频.
我想出了一个Selenium::Client::Driver有一个set_speed方法的实例.这与Java API相对应.
我怎样才能获得Selenium::Client::Driver该类的实例?我可以得到page.driver,但它返回一个实例Capybara::Driver::Selenium.
del*_*ere 24
感谢http://groups.google.com/group/ruby-capybara/msg/6079b122979ffad2提示.
只是注意到这使用了Ruby的睡眠,所以它有点不精确 - 但应该为你做好工作.此外,执行调用的所有内容,这就是为什么它等待亚秒级.中间步骤 - 等到准备好,检查字段,聚焦,输入文本 - 每次暂停.
在您的功能/支持目录中创建"throttle.rb"(如果使用Cucumber)并填写:
require 'selenium-webdriver'
module ::Selenium::WebDriver::Firefox
class Bridge
attr_accessor :speed
def execute(*args)
result = raw_execute(*args)['value']
case speed
when :slow
sleep 0.3
when :medium
sleep 0.1
end
result
end
end
end
def set_speed(speed)
begin
page.driver.browser.send(:bridge).speed=speed
rescue
end
end
Run Code Online (Sandbox Code Playgroud)
然后,在步骤定义中,调用:
set_speed(:slow)
Run Code Online (Sandbox Code Playgroud)
要么:
set_speed(:medium)
Run Code Online (Sandbox Code Playgroud)
要重置,请致电:
set_speed(:fast)
Run Code Online (Sandbox Code Playgroud)
这将起作用,并且不那么脆弱(对于一些较小的“ less”值)
require 'selenium-webdriver'
module ::Selenium::WebDriver::Remote
class Bridge
alias_method :old_execute, :execute
def execute(*args)
sleep(0.1)
old_execute(*args)
end
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5102 次 |
| 最近记录: |