Sha256: a40a850f9da6a87c8440f16ccd19e0d4516bdf5e8987aa19c72c162601aa8811

Contents?: true

Size: 1.49 KB

Versions: 4

Compression:

Stored size: 1.49 KB

Contents

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
      @modal.wait_until_present rescue raise NoMatchingWindowFoundException

      intUnknown = 0
      Wait.until 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
      
      WIN32OLE.connect_unknown(intUnknown)
    rescue NoMatchingWindowFoundException, Wait::TimeoutError
      raise NoMatchingWindowFoundException,
        "Unable to attach to Modal Window."
    end

    alias_method :document, :locate

    def title
      document.title
    end

    def close(timeout=5)
      return unless exists?
      document.parentWindow.close
      Watir::Wait.until(timeout) {!exists?} rescue nil
      wait
    end

    def attach_command
      "Watir::IE.find(:hwnd, #{@container.hwnd}).modal_dialog"
    end

    def wait(no_sleep=false)
      @container.page_container.wait unless exists?
    end

    def hwnd
      @modal.hwnd
    end

    def active?
      @modal.active?
    end

    def exists?
      @modal.exists?
    end

    alias_method :exist?, :exists?

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
watir-classic-3.3.0 lib/watir-classic/modal_dialog.rb
watir-classic-3.2.0 lib/watir-classic/modal_dialog.rb
watir-classic-3.2.0.rc1 lib/watir-classic/modal_dialog.rb
watir-classic-3.1.0 lib/watir-classic/modal_dialog.rb