Я тестирую приложение, используя ruby и watir. У меня есть файл init.rb с этим кодом
class Init_Test
def initialize
@browser = Watir::Browser.new :firefox
end
def login_with_creds username,password
@browser.goto 'https://54.69.254.137/webui#/landing'
sleep(2)
@browser.driver.manage.window.maximize
@browser.button(:class => 'sign-in md-button md-default-
theme').when_present.click
sleep(2)
@browser.text_field(:id =>'input_001').set(username)
sleep(2)
@browser.text_field(:id =>'input_002').set(password)
sleep(2)
@browser.button(:class =>'md-primary md-raised md-button md-default-theme').click
sleep(2)
return @browser
end
end
Я наследую этот файл в файл с именем ann.rb
require "watir"
require "watir-webdriver"
require_relative 'init'
class Post < Init_Test
@@b = login_with_creds("[email protected]","password")
def test_discuss
@@b.input(:id =>'input_002').when_present.click
sleep(1)
@@b.element(aria_label:'What do you want to do?').when_present.click
sleep(1)
@@b.element(:id =>'select_option_00G').when_present.click
sleep(1)
@@b.element(aria_label:'About what?').when_present.click
sleep(1)
@@b.element(:id =>'select_option_00P').when_present.click
sleep(1)
@@b.textarea(:id =>'input_00N').when_present.set('Discuss about java script and later test the application??')
sleep(1)
@@b.span(:text, 'Submit').when_present.click
sleep(1)
end
def test_question
@@b.input(:id =>'input_002').when_present.click
sleep(1)
@@b.element(aria_label:'What do you want to do?').when_present.click
sleep(2)
@@b.element(:id =>'select_option_014').when_present.click
sleep(2)
@@b.element(:id =>'select_017').when_present.click
sleep(1)
@@b.element(:id =>'select_option_01D').when_present.click
sleep(1)
@@b.textarea(:class =>'ng-pristine md-input ng-invalid ng-invalid-
required ng-touched').when_present.set('test question')
sleep(1)
@@b.span(:text, 'Submit').when_present.click
end
end
a = Post.new
a.test_discuss
a.test_question
Как видите, я использовал переменную класса @@b
и присвоил ей метод log_in_creds
, а затем использовал переменную класса для выполнения других действий. Однако, когда я запускаю его, он не выдает ошибку метода для log_In_creds
a.rb:6:in `<class:Post>': undefined method `login_with_creds' for
Post:Class (NoMethodError)
from a.rb:4:in `<main>'
почему он выдает ошибку для переменной класса. Мне нужно вызывать каждый метод, используя объект браузера, так как я хочу инициализировать браузер только один раз и выполнить необходимые операции позже.
login_with_creds' for nil:NilClass (NoMethodError)from post_announcements.rb:46:in
new' из post_announcements.rb:46:in `‹main›' 25.07.2015Post
. Может быть, будет понятнее, если вы сможете вставить обновленный код в вопрос. 25.07.2015