Как мне избавиться от следующего предупреждения: Проблема при настройке контекста на примере startundefined локальной переменной или метода `selenium_driver ' - PullRequest
2 голосов
/ 29 июня 2011

Все еще делаю мои первые шаги в Ruby (имея дело с некоторым написанным кодом).Каждый раз, когда я запускаю spec (отображается как есть), я получаю следующее предупреждение:

Problem while setting context on example startundefined local variable or method `selenium_driver' for #<Spec::Example::ExampleGroup::Subclass_1::Subclass_1:0x7f2d2cd840e0>

( Редактировать : разделить на две строки)

Problem while setting context on example start
undefined local variable or method `selenium_driver' for #<Spec::Example::ExampleGroup::Subclass_1::Subclass_1:0x7f2d2cd840e0>

Пока grep - через код Ruby - можно найти следующее:

/home/user/.rvm/gems/ruby-1.8.7-p334@frontend/gems/selenium-client-1.2.18/lib/selenium/rspec/spec_helper.rb:      STDERR.puts "Problem while setting context on example start" + e

Так вот выдержка из исходного кода spec_helper.rb:

  config.append_before(:each) do
    begin
      if selenium_driver && selenium_driver.session_started?
        selenium_driver.set_context "Starting example '#{self.description}'"
      end
    rescue Exception => e
      STDERR.puts "Problem while setting context on example start" + e
    end
  end

Просьба сообщить, как можно решить (потенциальную) проблему.

Обновление: Это grep также может быть полезным:

user@vm-ubuntu:~/dev/branch/tests$
grep selenium_driver *
my_module.rb:   @selenium_driver = driver
my_module.rb:   ['TERM', 'INT'].each {|s| Signal.trap(s) { @selenium_driver.stop && Process.exit(1) } }
my_module.rb:   return @selenium_driver

ОбновлениеN2:

My Gemfile:

source "http://rubygems.org"            # Default source

gem "hpricot", "~>0.8.4"
gem "json", "~>1.5.1"
gem "rspec", "~>1.3.2"
gem "selenium-client", "~>1.2.18"

My selenium_helper.rb file:

require 'selenium/client'
require "selenium/rspec/spec_helper"
...

Ответы [ 3 ]

1 голос
/ 07 июля 2011

Проблема в том, что selenium-client gem ожидает, что вы назовете свой объект драйвера 'selenium_driver' , а сделает его видимым из spec .

Например, если вы инициализируете селен следующим образом:

before(:all) do
  @driver = create_driver($hub_url, $hub_port, $browser) 
  @driver.start_new_browser_session
end

Вам нужно изменить его так, чтобы он выглядел так:

attr_reader :selenium_driver

before(:all) do
  @selenium_driver = create_driver($hub_url, $hub_port, $browser) 
  @selenium_driver.start_new_browser_session
end

По сути, это тот же код, просто другая переменнаяназвание.Селен-клиент использует это соглашение для применения контекстной информации к тестам.

0 голосов
/ 05 июля 2011

Добавить

gem "selenium-client"

в Gemfile (не забудьте запустить $ bundle install)

И добавить следующее к spec / spec_helper.rb

require "selenium/client"
require "selenium/rspec/spec_helper"
0 голосов
/ 05 июля 2011

Он говорит, что не может найти переменную selenium_driver.

Problem while setting context on example startundefined local variable or method `selenium_driver' for #<Spec::Example::ExampleGroup::Subclass_1::Subclass_1:0x7f2d2cd840e0>

состоит из строки "Problem while setting context on example start" плюс сообщение об ошибке исключения (что генерируется e)

"undefined local variable or method `selenium_driver' for #<Spec::Example::ExampleGroup::Subclass_1::Subclass_1:0x7f2d2cd840e0>"`.
...