module Wist
Attributes
wait_time_method[RW]
Public Class Methods
included(klass)
click to toggle source
# File lib/wist.rb, line 7 def self.included(klass) klass.include CommonAssert end
Public Instance Methods
alert_accept(expected_msg = false) { || ... }
click to toggle source
# File lib/wist.rb, line 75 def alert_accept(expected_msg = false) page.execute_script "window.alert = function(msg) { window.lastAlertMsg = msg; }" yield wait_until do get_js('window.lastAlertMsg') == expected_msg end if expected_msg end
assert_el_has_link(selector, link)
click to toggle source
# File lib/wist.rb, line 202 def assert_el_has_link(selector, link) common_assert_equal(get_js("$('#{selector}').attr('href')"), link) end
assert_text(text, el_or_selector)
click to toggle source
# File lib/wist.rb, line 152 def assert_text(text, el_or_selector) common_assert_equal(process_el_or_selector(el_or_selector).text, text) end
assert_text_include(text, el)
click to toggle source
# File lib/wist.rb, line 156 def assert_text_include(text, el) common_assert_equal(el.text.include?(text), true) end
click(*args)
click to toggle source
# File lib/wist.rb, line 45 def click(*args) find(*args).click end
click_by_text(selector, text, text_include: true, downcase: true)
click to toggle source
# File lib/wist.rb, line 164 def click_by_text(selector, text, text_include: true, downcase: true) all_with_wait(selector, visible: true).find do |el| el_text = downcase ? el.text.downcase : el.text text_include ? el_text.include?(text) : el_text == text end.click end
do_instantly() { || ... }
click to toggle source
# File lib/wist.rb, line 186 def do_instantly lambda do default_max_wait_time = get_capybara_wait_time @old_wait_time = default_max_wait_time if default_max_wait_time > 0 end.() Capybara.public_send("#{Wist.wait_time_method}=", 0) begin yield rescue => e raise(e) ensure Capybara.public_send("#{Wist.wait_time_method}=", @old_wait_time) end end
driver()
click to toggle source
# File lib/wist.rb, line 60 def driver page.driver.browser end
get_capybara_wait_time()
click to toggle source
# File lib/wist.rb, line 182 def get_capybara_wait_time Capybara.public_send(Wist.wait_time_method) end
get_js(code)
click to toggle source
# File lib/wist.rb, line 84 def get_js(code) page.evaluate_script code end
get_val(selector)
click to toggle source
# File lib/wist.rb, line 92 def get_val(selector) find(selector).value end
has_class?(el, class_name)
click to toggle source
# File lib/wist.rb, line 101 def has_class?(el, class_name) klass = el[:class] return false if Helpers.blank?(klass) klass.split(' ').include?(class_name) end
has_css_instant?(*args)
click to toggle source
# File lib/wist.rb, line 178 def has_css_instant?(*args) do_instantly { has_css?(*args) } end
interact_with_confirm(accept = true)
click to toggle source
# File lib/wist.rb, line 71 def interact_with_confirm(accept = true) page.execute_script("window.confirm = function() { return #{accept.to_json} }") end
jquery_selector(selector)
click to toggle source
# File lib/wist.rb, line 88 def jquery_selector(selector) "$('#{selector}')" end
parent(el)
click to toggle source
# File lib/wist.rb, line 160 def parent(el) el.first(:xpath, './/..') end
process_el_or_selector(el_or_selector)
click to toggle source
# File lib/wist.rb, line 107 def process_el_or_selector(el_or_selector) if el_or_selector.is_a?(String) find(el_or_selector, visible: true) else el_or_selector end end
refresh()
click to toggle source
# File lib/wist.rb, line 128 def refresh visit current_url end
scroll_to(selector)
click to toggle source
# File lib/wist.rb, line 141 def scroll_to(selector) page.execute_script("#{jquery_selector('html, body')}.scrollTop(#{jquery_selector(selector)}.offset().top)") end
set_input_and_press_enter(selector, val)
click to toggle source
# File lib/wist.rb, line 96 def set_input_and_press_enter(selector, val) wait_til_element_visible(selector) page.execute_script("#{jquery_selector(selector)}.val('#{val}').trigger({type: 'keydown', which: 13}).trigger({ type: 'keypress', which: 13})") end
set_value_and_trigger_evts(selector, val)
click to toggle source
# File lib/wist.rb, line 49 def set_value_and_trigger_evts(selector, val) find(selector).set(val) page.execute_script("$('#{selector}').focusout().blur().change().trigger('input')") end
switch_to_window_and_execute(new_window_lambda) { || ... }
click to toggle source
# File lib/wist.rb, line 64 def switch_to_window_and_execute(new_window_lambda) within_window(window_opened_by(&new_window_lambda)) do yield driver.close end end
wait_for_ajax()
click to toggle source
# File lib/wist.rb, line 132 def wait_for_ajax wait_until { get_js '$.isReady && ($.active == 0)' } end
wait_for_new_url(element_to_click = nil) { || ... }
click to toggle source
# File lib/wist.rb, line 115 def wait_for_new_url(element_to_click = nil) old_url = current_url if element_to_click.nil? yield else process_el_or_selector(element_to_click).click end sleep 1 wait_until { current_url != old_url } end
wait_til_element_visible(selector)
click to toggle source
# File lib/wist.rb, line 136 def wait_til_element_visible(selector) has_css?(selector, visible: true) find(selector) end
wait_until(timeout: false) { || ... }
click to toggle source
# File lib/wist.rb, line 33 def wait_until(timeout: false) do_instantly do Selenium::WebDriver::Wait.new(timeout: timeout || @old_wait_time).until do begin yield rescue false end end end end