Sha256: c73508d3dc85d93b30f4bfda9373d0431deecb42ba1593d2068e1a44d127c8ec

Contents?: true

Size: 1.93 KB

Versions: 8

Compression:

Stored size: 1.93 KB

Contents

class WinClicker
  def initialize
    raise NotImplementedError, 'Watir no longer supports WinClicker. Please use click_no_wait and the javascript_dialog method.'
  end
end

module Watir
  class ModalDialog
    include Container
    include PageContainer
    include Win32

    def initialize(container)
      set_container container
      @modal = ::RAutomation::Window.new(:hwnd=>@container.hwnd).child(:class => 'Internet Explorer_TridentDlgFrame')
    end

    def locate
      intUnknown = 0
      begin
        Watir::until_with_timeout do
          intPointer = " " * 4 # will contain the int value of the IUnknown*
          GetUnknown.call(hwnd, intPointer)
          intArray = intPointer.unpack('L')
          intUnknown = intArray.first
          intUnknown > 0
        end
      rescue Wait::TimeoutError => e
        raise NoMatchingWindowFoundException,
          "Unable to attach to Modal Window after #{e.duration} seconds."
      end
      @document = WIN32OLE.connect_unknown(intUnknown)
    end

    def document
      locate
      @document
    end
    
    def title
      document.title
    end

    def close
      document.parentWindow.close
    end

    def attach_command
      "Watir::IE.find(:hwnd, #{@container.hwnd}).modal_dialog"
    end
      
    def wait(no_sleep=false)
      sleep 1
      if exists?
        # do nothing
      else
        @container.page_container.wait
      end
    end
    
    def hwnd
      @modal.hwnd
    end

    def active?
      @modal.active?
    end

    # When checking to see if the modal exists we give it some time to
    # find it. So if it does see a modal it returns immediately, otherwise it waits and checks
    def exists?(timeout=5)
      begin
        Watir::Wait.until(timeout) {@modal.exists?}
      rescue Watir::Wait::TimeoutError
      end
      return @modal.exists?
    end
    alias :exist? :exists?
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
watir-1.9.2 lib/watir/modal_dialog.rb
watir-1.9.2.rc1 lib/watir/modal_dialog.rb
watir-1.9.1 lib/watir/modal_dialog.rb
watir-1.9.1.rc1 lib/watir/modal_dialog.rb
watir-1.9.0 lib/watir/modal_dialog.rb
watir-1.9.0.rc7 lib/watir/modal_dialog.rb
watir-1.9.0.rc6 lib/watir/modal_dialog.rb
watir-1.9.0.rc5 lib/watir/modal_dialog.rb