有没有办法控制watir中的测试执行速度?如何降低测试执行的速度?
有人建议我使用以下方法browser.speed = :slow
,但是,目前使用的浏览器驱动程序Watir :: Browser类没有这样的方法。
答案 0 :(得分:1)
根据文档,Watir::Browser#speed=已默认为:slow
。但是,据我所知,更改此选项仅对Internet Explorer有效,对其他浏览器没有影响。实际上,使用Chrome或Firefox时,构造函数将不接受速度参数,并且不为该选项提供公共接口。
但是,与大多数Ruby一样,您总是可以直接访问变量并进行调整。这可能适用于您的用例,也可能不适用,但您当然可以这样做:
browser = Watir::Browser.new :chrome
#=> #<Watir::Browser:0x..fee868224270c4e1c url="data:," title="data:,">
browser.instance_variable_set :@speed, :slow
#=> :slow
browser.instance_variable_get :@speed
#=> :slow
在实践中,测试浏览器通常涉及大量异步JavaScript事件,因此您可能希望等待事件或元素,而不是试图减慢测试本身。为此,您可以使用显式或隐式等待。
您可以在几秒钟内添加隐式等待。例如,要为每个事件或元素等待最多30秒:
browser.driver.manage.timeouts.implicit_wait = 30
Watir同时支持Watir::Wait#until和Watir::Wait#while。例如,要等到登录字段可见:
Watir::Wait.until { browser.text_field(name: 'login').visible? }
在幕后,Watir是Ruby,所以你也可以使用Kernel#sleep将明确的睡眠放入你的测试中。这样做的主要缺点是它没有响应。即使您正在等待的事件或元素触发或更改,您的代码也会在指定的时间段内休眠。这可能会使您的测试变得不必要地慢。