我写了以下代码:
require 'selenium-webdriver'
driver = Selenium::WebDriver.for(:firefox)
driver.navigate.to("http://www.yahoo.co.uk")
assert(@driver.find_element(:tag_name => "body").text.include?("News"))
driver.find_element(:link_text, "News").click
driver.quit
但是低于错误:
C:/RubyTito/FirstRuby/RSpec.rb:4:in `<main>': undefined method `find_element' for nil:NilClass (NoMethodError)
脚本打开ff但在第4行停止。我想要实现的是脚本应该打开ff找到新闻链接(给出一些消息为TRUE),然后点击新闻链接。
答案 0 :(得分:0)
@driver未在您的代码中确定
<强>顺便说一句:强>
@driver是一个实例变量 - 可供类中的所有方法使用。
driver是一个局部变量。它们只存在于其范围内(当前块)
解决方案#1:
require 'selenium-webdriver'
driver = Selenium::WebDriver.for(:firefox)
driver.navigate.to("http://www.yahoo.co.uk")
if driver.find_element(:tag_name => "body").text.include?("News") # true or false
puts "News link present on page"
driver.find_element(:link_text, "News").click
else
puts "News not found"
end
driver.quit
解决方案#2 :(以rspec运行this_file.rb)
require "selenium-webdriver"
require "rspec"
describe "Yahoo Search" do
before(:each) do
@driver = Selenium::WebDriver.for :firefox
@base_url = "http://www.yahoo.co.uk"
@accept_next_alert = true
@driver.manage.timeouts.implicit_wait = 30
end
after(:each) do
@driver.quit
end
it "click on News link" do
@driver.get(@base_url + "/")
@driver.find_element(:tag_name => "body").text.include?("News")
@driver.find_element(:link_text, "News").click
end
end
您也可以使用watir-webdriver