#encoding:utf-8
require 'rubygems'
require 'watir-webdriver'
b = Watir::Browser.new :firefox
text_site = 'http://www.baidu.com'
context = '百度首页'
b.speed = :fast
b.goto text_site
b.text_field(:name => 'wd').set 'ruby'
b.button(:type, "submit").click
puts b.url
puts b.exists?
if b.text.include?("#{context}")
puts "Test is success.because it cantains text '#{context}' "
else
puts 'Test is failed.'
end
b.close
请问大神,我在跑测试例子的时候,加了一句 b.speed = :fast 就报错了,但是我看官网上也是这样写的呀。没有这句就没有错。错误信息:undefined method `speed=' for # (NoMethodError) 这个难道是浏览器的原因么?
该回答引用ChatGPT-3.5
在最新版本的 Watir 中,方法 #speed= 已经被弃用,因此在运行时会出现 undefined method 'speed=' 的错误信息。
相反,现在使用的方法是 #driver.manage.timeouts.implicit_wait=,例如:
b.driver.manage.timeouts.implicit_wait = 3
这将等待最多 3 秒钟,直到元素出现。您可以根据需要设置等待时间。
所以,您可以将您的代码修改如下:
#encoding:utf-8
require 'rubygems'
require 'watir-webdriver'
b = Watir::Browser.new :firefox
text_site = 'http://www.baidu.com'
context = '百度首页'
b.driver.manage.timeouts.implicit_wait = 3 # 设置等待时间
b.goto text_site
b.text_field(:name => 'wd').set 'ruby'
b.button(:type, "submit").click
puts b.url
puts b.exists?
if b.text.include?("#{context}")
puts "Test is success.because it cantains text '#{context}' "
else
puts 'Test is failed.'
end
b.close
这应该可以解决您的问题。