vapir-ie 1.8.1 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,7 @@
1
1
  module Vapir
2
2
  AutoItDLL=File.join(File.expand_path(File.dirname(__FILE__)),'AutoItX3.dll')
3
+ # returns a WIN32OLE for an AutoIt control. if AutoIt is not registered, this will attempt to
4
+ # registered the bundled AutoIt DLL and return a WIN32OLE for it when it is registered.
3
5
  def self.autoit
4
6
  @@autoit||= begin
5
7
  begin
@@ -117,7 +117,7 @@ module Vapir
117
117
  }
118
118
  how=hows.keys.detect{|h| h.to_s.downcase==orig_how.to_s.downcase}
119
119
  raise ArgumentError, "how should be one of: #{hows.keys.inspect} (was #{orig_how.inspect})" unless how
120
- @browser_object = ::Waiter.try_for(options[:timeout], :exception => NoMatchingWindowFoundException.new("Unable to locate a window with #{how} of #{what}")) do
120
+ @browser_object = ::Waiter.try_for(options[:timeout], :exception => NoMatchingWindowFoundException.new("Unable to locate a window with #{how} of #{what.inspect}")) do
121
121
  self.class.browser_objects.detect do |browser_object|
122
122
  begin
123
123
  Vapir::fuzzy_match(hows[how].call(browser_object), what)
@@ -313,8 +313,7 @@ module Vapir
313
313
  assert_exists
314
314
  @browser_object.stop
315
315
  @browser_object.quit
316
- # TODO/fix timeout; this shouldn't be a hard-coded magic number.
317
- ::Waiter.try_for(32, :exception => WindowFailedToCloseException.new("The browser window did not close"), :interval => 1) do
316
+ ::Waiter.try_for(config.close_timeout, :exception => WindowFailedToCloseException.new("The browser window did not close"), :interval => 1) do
318
317
  begin
319
318
  if exists?
320
319
  @browser_object.quit
@@ -461,7 +460,7 @@ module Vapir
461
460
  require 'nokogiri'
462
461
  if @xml_parser_doc == nil
463
462
  htmlSource ="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<HTML>\n"
464
- htmlSource = html_source(document.body,htmlSource," ")
463
+ htmlSource = html_source(document_object.body,htmlSource," ")
465
464
  htmlSource += "\n</HTML>\n"
466
465
  # Angrez: Resolving Jira issue WTR-114
467
466
  htmlSource = htmlSource.gsub(/&nbsp;/, '&#160;')
@@ -672,7 +671,7 @@ module Vapir
672
671
  curElem = nil
673
672
 
674
673
  #puts "Hello; Given xpath is : #{xpath}"
675
- doc = document
674
+ doc = document_object
676
675
  curElem = doc.getElementsByTagName("body").item(0)
677
676
  xpath =~ /^.*\/body\[?\d*\]?\/(.*)/
678
677
  xpath = $1
@@ -5,7 +5,24 @@ module Vapir
5
5
  class IE::ModalDialog
6
6
  include Vapir::ModalDialog
7
7
  def locate
8
- @modal_window=@browser.win_window.enabled_popup
8
+ @modal_window=@browser.win_window.enabled_popup || begin
9
+ # IE9 modal dialogs aren't modal to the actual browser window. instead it creates some
10
+ # other window with class_name="Alternate Modal Top Most" and makes the modal dialog modal
11
+ # to that thing instead. this has the same text (title) as the browser window but that
12
+ # is the only relationship I have found so far to the browser window. I'd like to use a
13
+ # stronger relationship than that, but, it'll have to do.
14
+ matching_windows = WinWindow::All.select do |win|
15
+ win.parent && win.parent.class_name == "Alternate Modal Top Most" && win.parent.text == @browser.win_window.text
16
+ end
17
+ case matching_windows.size
18
+ when 0
19
+ nil
20
+ when 1
21
+ matching_windows.first
22
+ else
23
+ raise Vapir::Exception::WindowException, "found multiple windows that looked like popups: #{matching_windows.inspect}"
24
+ end
25
+ end
9
26
  end
10
27
 
11
28
  def exists?
@@ -78,7 +78,7 @@ module Vapir
78
78
  # execScript works, but behaves differently than eval (it doesn't return anything) - but
79
79
  # once an execScript has run, eval is subsequently defined. so, execScript a blank script,
80
80
  # and then try again with eval.
81
- document.parentWindow.execScript('null')
81
+ document_object.parentWindow.execScript('null')
82
82
  retried=true
83
83
  retry
84
84
  end
@@ -93,7 +93,7 @@ module Vapir
93
93
  unless options.is_a?(Hash)
94
94
  raise ArgumentError, "given options should be a Hash, not #{options.inspect} (#{options.class})\nold conflicting arguments of no_sleep or last_url are gone"
95
95
  end
96
- options={:sleep => false, :interval => 0.1, :timeout => 120}.merge(options)
96
+ options={:sleep => false, :interval => 0.1, :timeout => config.wait_timeout}.merge(options)
97
97
  @xml_parser_doc = nil
98
98
  @down_load_time = nil
99
99
  start_load_time = Time.now
@@ -63,7 +63,26 @@ browser_window=WinWindow.new(browser_hwnd.to_i)
63
63
 
64
64
  popup=nil
65
65
  $upload_dialog=::Waiter.try_for(16, :exception => nil) do
66
- if (popup=browser_window.enabled_popup) && UploadWindowTitles.values.include?(popup.text)
66
+ popup=browser_window.enabled_popup || begin
67
+ # IE9 modal dialogs aren't modal to the actual browser window. instead it creates some
68
+ # other window with class_name="Alternate Modal Top Most" and makes the modal dialog modal
69
+ # to that thing instead. this has the same text (title) as the browser window but that
70
+ # is the only relationship I have found so far to the browser window. I'd like to use a
71
+ # stronger relationship than that, but, it'll have to do.
72
+ matching_windows = WinWindow::All.select do |win|
73
+ win.parent && win.parent.class_name == "Alternate Modal Top Most" && win.parent.text == browser_window.text
74
+ end
75
+ case matching_windows.size
76
+ when 0
77
+ nil
78
+ when 1
79
+ matching_windows.first
80
+ else
81
+ raise Vapir::Exception::WindowException, "found multiple windows that looked like popups: #{matching_windows.inspect}"
82
+ end
83
+ end
84
+
85
+ if popup && UploadWindowTitles.values.include?(popup.text)
67
86
  popup
68
87
  end
69
88
  end
@@ -1,5 +1,5 @@
1
1
  module Vapir
2
2
  class IE
3
- VERSION = '1.8.1'
3
+ VERSION = '1.9.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vapir-ie
3
3
  version: !ruby/object:Gem::Version
4
- hash: 53
4
+ hash: 51
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
- - 8
9
- - 1
10
- version: 1.8.1
8
+ - 9
9
+ - 0
10
+ version: 1.9.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ethan
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-05-17 00:00:00 -04:00
18
+ date: 2011-08-04 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -26,12 +26,12 @@ dependencies:
26
26
  requirements:
27
27
  - - "="
28
28
  - !ruby/object:Gem::Version
29
- hash: 53
29
+ hash: 51
30
30
  segments:
31
31
  - 1
32
- - 8
33
- - 1
34
- version: 1.8.1
32
+ - 9
33
+ - 0
34
+ version: 1.9.0
35
35
  type: :runtime
36
36
  version_requirements: *id001
37
37
  - !ruby/object:Gem::Dependency
@@ -81,12 +81,12 @@ dependencies:
81
81
  version: 0.5.4
82
82
  - - <
83
83
  - !ruby/object:Gem::Version
84
- hash: 23
84
+ hash: 15
85
85
  segments:
86
- - 1
86
+ - 2
87
87
  - 0
88
88
  - 0
89
- version: 1.0.0
89
+ version: 2.0.0
90
90
  type: :runtime
91
91
  version_requirements: *id004
92
92
  - !ruby/object:Gem::Dependency