class Watir::AfterHooks
After hooks are blocks that run after certain browser events. They are generally used to ensure application under test does not encounter any error and are automatically executed after following events:
1. Open URL. 2. Refresh page. 3. Click, double-click or right-click on element. 4. Alert closing.
Public Class Methods
new(browser)
click to toggle source
# File lib/watir/after_hooks.rb, line 15 def initialize(browser) @browser = browser @after_hooks = [] end
Public Instance Methods
[](index)
click to toggle source
Gets the after hook at the given index.
@param [Integer] index @return [#call]
# File lib/watir/after_hooks.rb, line 129 def [](index) @after_hooks[index] end
add(after_hook = nil, &block)
click to toggle source
Adds new after hook.
@example
browser.after_hooks.add do |browser| browser.text.include?("Server Error") and puts "Application exception or 500 error!" end browser.goto "watir.com/404" "Application exception or 500 error!"
@param [#call] after_hook Object
responding to call @yield after_hook block @yieldparam [Watir::Browser]
# File lib/watir/after_hooks.rb, line 35 def add(after_hook = nil, &block) if block_given? @after_hooks << block elsif after_hook.respond_to? :call @after_hooks << after_hook else raise ArgumentError, 'expected block or object responding to #call' end end
Also aliased as: <<
delete(after_hook)
click to toggle source
Deletes after hook.
@example
browser.after_hooks.add do |browser| browser.text.include?("Server Error") and puts "Application exception or 500 error!" end browser.goto "watir.com/404" "Application exception or 500 error!" browser.after_hooks.delete browser.after_hooks[0] browser.refresh
# File lib/watir/after_hooks.rb, line 59 def delete(after_hook) @after_hooks.delete(after_hook) end
each(&blk)
click to toggle source
Yields each after hook.
@yieldparam [#call] after_hook Object
responding to call
# File lib/watir/after_hooks.rb, line 102 def each(&blk) @after_hooks.each { |after_hook| blk.call(after_hook) } end
length()
click to toggle source
Returns number of after hooks.
@example
browser.after_hooks.add { puts 'Some after_hook.' } browser.after_hooks.length #=> 1
@return [Integer]
# File lib/watir/after_hooks.rb, line 117 def length @after_hooks.length end
Also aliased as: size
run()
click to toggle source
Runs after hooks.
# File lib/watir/after_hooks.rb, line 67 def run # We can't just rescue exception because Firefox automatically closes alert when exception raised return unless @after_hooks.any? && !@browser.alert.exists? each { |after_hook| after_hook.call(@browser) } rescue Selenium::WebDriver::Error::NoSuchWindowError => e Watir.logger.info "Could not execute After Hooks because browser window was closed #{e}" end
without() { |browser| ... }
click to toggle source
Executes a block without running error after hooks.
@example
browser.after_hooks.without do |browser| browser.element(name: "new_user_button").click end
@yield Block that is executed without after hooks being run @yieldparam [Watir::Browser]
# File lib/watir/after_hooks.rb, line 88 def without current_after_hooks = @after_hooks @after_hooks = [] yield(@browser) ensure @after_hooks = current_after_hooks end