2016-06-19 5 views
1

グーグルに対する簡単なカピバラ例を書き込もうとしましたが、私は未定義のメソッドが `セレンは「訪問:: webdriverを::ドライバー

driver.get("http://www.google.com/") 

を使用することができますが、私は使用することはできません

undefined method `visit' for #<Selenium::WebDriver::Driver:0x000000055f8cc8> 

を取得

driver.visit("http://www.google.com/") 

は私が持っている:

require "rspec" 
require 'selenium-webdriver' 
require "capybara" 
require "capybara/rspec" 
require "capybara/dsl" 

RSpec.configure do |config| 
    config.include Capybara::DSL 
end 

Capybara.configure do |config| 
    config.run_server = false 
    config.default_driver = :selenium 
    config.app_host = 'https://www.google.com' 
end 

describe "Google Search", type: :feature do 

    it "Tests Google" do 
    driver = Selenium::WebDriver.for :chrome 
    driver.visit "http://www.google.com/" <-- Error 
    fill_in('input', with: '123') 
    find_element('input', "Google Search").click 
    driver.quit 
    end 

end 

セレンのfirefoxセットアップが同期していないため、クロムを使用する必要があることに注意してください(時間の経過とともに共通の問題 - 60秒でfirefoxを起動できません)。しかし、クロムが動作し、ブラウザが現れます。もしあれば、あなたが(セッションで訪問を呼び出すべきである - ので、あなたが直接ドライバを使用するべきではありませんRSpecのセットアップの問題

require 'rubygems' 
require 'selenium-webdriver' 

driver = Selenium::WebDriver.for :chrome 
driver.get "http://google.com" 

element = driver.find_element :name => "q" 
element.send_keys "Cheese!" 
element.submit 

puts "Page title is #{driver.title}" 

wait = Selenium::WebDriver::Wait.new(:timeout => 10) 
wait.until { driver.title.downcase.start_with? "cheese!" } 

puts "Page title is #{driver.title}" 
driver.quit 

答えて

1

のいくつかの並べ替えのように思える

この単純ルビ例のみしかし作業を行いますあなたが自分のセッションを管理していれば、あなたが使っていた変数に呼ぶでしょう。もしあなたがカピバラにあなたが呼びたいはずのセッションを管理させるならば)。

Firefoxが動作しないのは、Firefox 47がセレンで何かを壊したからです。https://github.com/SeleniumHQ/selenium/issues/2110 - すぐに47.0.1のリリースで修正されるか、46に戻すことができます。クロムあなたの仕様/ rails_helperにクロムを使用したドライバのバージョンを登録し、

Capybara.register_driver :selenium_chrome do |app| 
    Capybara::Selenium::Driver.new(app, :browser => :chrome) 
end 

Capybara.default_driver = :selenium_chrome # for most people this would normally be assigned to javascript_driver, but since you're using selenium for all tests we can just assign to default_driver 

が次にあなただけだろうことを指定する必要があり

describe "Google Search", type: :feature do 

    it "Tests Google" do 
    page.visit "http://www.google.com/" #technically the page may not be required here but it can prevent method name collisions with other libraries 
    page.fill_in('input', with: '123') 
    find_element('input', "Google Search").click # I'm guessing this is your own defined method since Capybara doesn't have a find_element method? 
    end  
end 
関連する問題