Я очень новичок в Ruby и разрабатываю скрипты с Watir для приемочных испытаний, и я застрял в колею, что я даже не уверен, что можно выбраться.Ruby Глобальные переменные после обновления браузера
У меня есть небольшой скрипт, который работает, который в основном смотрит на раскрывающийся список, сохраняет все выпадающие элементы в глобальную переменную, которую затем перебираю и запускаю другие функции.
Проблема возникает, когда я пытаюсь обновить браузер после запуска всех функций для каждого элемента раскрывающегося списка, который затем пытается выполнить итерацию следующего элемента раскрывающегося списка и выполнить те же функции до тех пор, пока все раскрывающиеся элементы не будут завершены.
$browser = Watir::Browser.new :chrome
$wait = Watir::Wait
def wait_while_loading(what)
lightbox = $browser.div(:class , 'lightbox')
begin
# Capture load start
start = Time.now
$wait.until { lightbox.present? }
$wait.until { !lightbox.present? }
# Capture load end
finish = Time.now
load_time = (finish - start).to_s
rescue => e
print e.backtrace.join("\n")
#log_error('Failed while loading ' + what + '.')
end
end
def cycle_all_views
$views = []
$current_view
$view_dropdown = $browser.div(:id, 'views-dropdown')
$views = $browser.div(:class, 'dropdown-views').div(:class, 'dropdown-menu--footer').ul(:class, 'dropdown-menu').divs(:class, 'dropdown-menu-item')
start_on_view = 10
begin
$views.drop(start_on_view).each_with_index do |view, i|
$view_dropdown.click
$current_view = view.text
index = i.to_s
safe_name = sanitize($current_view)
view.click
wait_while_loading($current_view)
$browser.refresh
wait_while_loading('Refreshing Page...')
end
rescue => e
#log_error('Failed to load view ' + $current_view)
end
end
После запуска $browser.refresh
, нажав на $views_dropdown
после перебора к следующим view
, я поздоровался с ошибкой о том, no implicit conversion of nil into String
предполагая при попытке сделать $current_view = view.text
. Я теряю все назначения переменных после обновления страницы? Если да, есть ли способ их сохранить?
Если бы кто-нибудь мог указать мне на лучший способ отладки моих сценариев Watir, я хотел бы знать, как облегчить мою жизнь.
Стек след возвращает это:
C:/Ruby23/lib/ruby/gems/2.3.0/gems/watir-webdriver-0.9.3/lib/watir-webdriver/ele
ments/element.rb:536:in `assert_element_found'
C:/Ruby23/lib/ruby/gems/2.3.0/gems/watir-webdriver-0.9.3/lib/watir-webdriver/ele
ments/element.rb:524:in `ensure_not_stale'
C:/Ruby23/lib/ruby/gems/2.3.0/gems/watir-webdriver-0.9.3/lib/watir-webdriver/ele
ments/element.rb:503:in `assert_exists'
C:/Ruby23/lib/ruby/gems/2.3.0/gems/watir-webdriver-0.9.3/lib/watir-webdriver/ele
ments/element.rb:81:in `text'
main.rb:55:in `block in cycle_all_views'
main.rb:52:in `each'
main.rb:52:in `each_with_index'
main.rb:52:in `cycle_all_views'
main.rb:122:in `block in <main>'
main.rb:112:in `each'
main.rb:112:in `<main>'Failed to load view First View
Пожалуйста, разместите stacktrace вашей ошибки. – DiegoSalazar
След стека отправлен на исходное сообщение. – ascendantofrain
, и я абсолютно люблю отладчика Rubymine для работы с UI-тестами. – titusfortner