Class: Watir::ModalDialog

Inherits:
Object show all
Includes:
Container, PageContainer, Win32
Defined in:
lib/watir-classic/modal_dialog.rb

Constant Summary

Constants included from Win32

Win32::FindWindowEx, Win32::GW_CHILD, Win32::GW_ENABLEDPOPUP, Win32::GW_HWNDFIRST, Win32::GW_HWNDLAST, Win32::GW_HWNDNEXT, Win32::GW_HWNDPREV, Win32::GW_MAX, Win32::GW_OWNER, Win32::GetUnknown, Win32::GetWindow, Win32::IsWindow, Win32::User32

Instance Attribute Summary

Attributes included from Container

#activeObjectHighLightColor, #page_container, #type_keys, #typingspeed

Instance Method Summary collapse

Methods included from Win32

window_exists?

Methods included from PageContainer

#check_for_http_error, #contains_text, #enabled_popup, #execute_script, #html, #set_container, #text, #url

Methods included from Exception

message_for_unable_to_locate

Methods included from Container

#__ole_inner_elements, #alert, #locator_for, #modal_dialog, #set_container, support_element

Constructor Details

#initialize(container) ⇒ ModalDialog

Returns a new instance of ModalDialog.



7
8
9
10
# File 'lib/watir-classic/modal_dialog.rb', line 7

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

Instance Method Details

#active?Boolean

Returns:

  • (Boolean)


55
56
57
# File 'lib/watir-classic/modal_dialog.rb', line 55

def active?
  @modal.active?
end

#attach_commandObject



43
44
45
# File 'lib/watir-classic/modal_dialog.rb', line 43

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

#close(timeout = 5) ⇒ Object



36
37
38
39
40
41
# File 'lib/watir-classic/modal_dialog.rb', line 36

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

#exists?Boolean Also known as: exist?

Returns:

  • (Boolean)


59
60
61
# File 'lib/watir-classic/modal_dialog.rb', line 59

def exists?
  @modal.exists?
end

#hwndObject



51
52
53
# File 'lib/watir-classic/modal_dialog.rb', line 51

def hwnd
  @modal.hwnd
end

#locateObject Also known as: document



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/watir-classic/modal_dialog.rb', line 12

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

#titleObject



32
33
34
# File 'lib/watir-classic/modal_dialog.rb', line 32

def title
  document.title
end

#wait(no_sleep = false) ⇒ Object



47
48
49
# File 'lib/watir-classic/modal_dialog.rb', line 47

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