watir 3.0.0.rc2 → 3.0.0.rc3
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +19 -0
- data/VERSION +1 -1
- data/lib/watir/close_all.rb +2 -2
- data/lib/watir/container.rb +6 -4
- data/lib/watir/cookies.rb +80 -0
- data/lib/watir/core.rb +7 -3
- data/lib/watir/dialogs/file_field.rb +0 -4
- data/lib/watir/drag_and_drop_helper.rb +68 -0
- data/lib/watir/element.rb +58 -156
- data/lib/watir/element_collection.rb +109 -0
- data/lib/watir/form.rb +7 -14
- data/lib/watir/frame.rb +11 -26
- data/lib/watir/ie-class.rb +17 -307
- data/lib/watir/ie.rb +0 -9
- data/lib/watir/image.rb +8 -25
- data/lib/watir/input_elements.rb +32 -81
- data/lib/watir/link.rb +2 -17
- data/lib/watir/locator.rb +29 -25
- data/lib/watir/modal_dialog.rb +26 -40
- data/lib/watir/non_control_elements.rb +111 -79
- data/lib/watir/page-container.rb +12 -1
- data/lib/watir/supported_elements.rb +172 -0
- data/lib/watir/table.rb +61 -89
- data/lib/watir/win32ole.rb +2 -3
- data/lib/watir/win32ole/1.9.3/win32ole.so +0 -0
- data/lib/watir/xpath_locator.rb +52 -0
- data/rakefile.rb +1 -1
- data/unittests/checkbox_test.rb +22 -32
- data/unittests/css_selector_test.rb +1 -6
- data/unittests/css_test.rb +1 -4
- data/unittests/div_test.rb +3 -21
- data/unittests/document_standards.rb +0 -4
- data/unittests/element_collections_test.rb +2 -2
- data/unittests/element_test.rb +1 -1
- data/unittests/form_test.rb +0 -30
- data/unittests/frame_test.rb +8 -49
- data/unittests/ie_test.rb +5 -9
- data/unittests/images_test.rb +6 -6
- data/unittests/index_specifier_test.rb +0 -1
- data/unittests/js_events_test.rb +1 -1
- data/unittests/links_multi_test.rb +0 -14
- data/unittests/links_test.rb +8 -51
- data/unittests/lists_test.rb +0 -9
- data/unittests/navigate_test.rb +1 -1
- data/unittests/nbsp_xpath_test.rb +1 -1
- data/unittests/no_wait_test.rb +3 -3
- data/unittests/parent_child_test.rb +0 -17
- data/unittests/pre_test.rb +0 -3
- data/unittests/radios_test.rb +31 -42
- data/unittests/selectbox_test.rb +18 -21
- data/unittests/selectbox_xpath_test.rb +11 -26
- data/unittests/table_test.rb +14 -79
- data/unittests/textfields_test.rb +8 -47
- data/unittests/windows/attach_to_new_window_test.rb +0 -8
- data/unittests/windows/frame_links_test.rb +5 -5
- data/unittests/windows/ie-each_test.rb +1 -1
- data/unittests/windows/modal_dialog_test.rb +2 -2
- data/watir.gemspec +3 -3
- metadata +81 -126
- data/lib/watir/camel_case.rb +0 -67
- data/lib/watir/collections.rb +0 -48
- data/lib/watir/cookiemanager.rb +0 -56
- data/lib/watir/element_collections.rb +0 -81
- data/lib/watir/html_element.rb +0 -30
- data/unittests/defer_test.rb +0 -47
- data/unittests/multiple_specifiers_test.rb +0 -29
- data/unittests/table_and_tablerow_to_a_test.rb +0 -117
- data/unittests/windows/iedialog_test.rb +0 -53
data/lib/watir/collections.rb
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
module Watir
|
2
|
-
class InputElementCollections < ElementCollections
|
3
|
-
def each
|
4
|
-
@container.locator_for(InputElementLocator, element_class::INPUT_TYPES, @how, @what, element_class).each {|element| yield element}
|
5
|
-
end
|
6
|
-
end
|
7
|
-
|
8
|
-
class HTMLElements < ElementCollections
|
9
|
-
def each
|
10
|
-
@container.locator_for(TaggedElementLocator, ["*"], @how, @what, Element).each { |element| yield element }
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
# this class accesses the check boxes in the document as a collection
|
15
|
-
# Normally a user would not need to create this object as it is returned by the Watir::Container#checkboxes method
|
16
|
-
class CheckBoxes < InputElementCollections
|
17
|
-
def element_class; CheckBox; end
|
18
|
-
end
|
19
|
-
|
20
|
-
# this class accesses the select boxes in the document as a collection
|
21
|
-
# Normally a user would not need to create this object as it is returned by the Watir::Container#select_lists method
|
22
|
-
class SelectLists < InputElementCollections
|
23
|
-
def element_tag; 'SELECT'; end
|
24
|
-
end
|
25
|
-
|
26
|
-
%w[Button FileField Radio TextField TextArea Hidden].each do |element|
|
27
|
-
module_eval %Q{
|
28
|
-
class #{element}s < InputElementCollections; end
|
29
|
-
}
|
30
|
-
end
|
31
|
-
|
32
|
-
class Inses < ElementCollections
|
33
|
-
def element_class; Ins; end
|
34
|
-
end
|
35
|
-
|
36
|
-
class TableSectionCollection < ElementCollections
|
37
|
-
def element_class; TableSection; end
|
38
|
-
end
|
39
|
-
|
40
|
-
%w[Form Frame Link Li Map Area Image Table TableRow TableCell TableHeader TableFooter TableBody
|
41
|
-
Label Pre P Span Div Dl Dt Dd Strong Em Del
|
42
|
-
Font H1 H2 H3 H4 H5 H6 Meta Ol Ul FieldSet Option].each do |element|
|
43
|
-
module_eval %Q{
|
44
|
-
class #{element}s < ElementCollections; end
|
45
|
-
}
|
46
|
-
end
|
47
|
-
|
48
|
-
end
|
data/lib/watir/cookiemanager.rb
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
# should be moved to watir/contrib
|
2
|
-
# use of modules here is ugly
|
3
|
-
|
4
|
-
require 'find'
|
5
|
-
module Watir
|
6
|
-
module CookieManager
|
7
|
-
|
8
|
-
class Dir
|
9
|
-
def Dir.visit(dir = '.', files_first = false, &block)
|
10
|
-
if files_first
|
11
|
-
paths = []
|
12
|
-
Find.find(dir) { |path| paths << path }
|
13
|
-
paths.reverse_each {|path| yield path}
|
14
|
-
else
|
15
|
-
Find.find(dir, &block)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
# simulates unix rm -rf command
|
19
|
-
def Dir.rm_rf(dir)
|
20
|
-
Dir.visit(dir, true) do |path|
|
21
|
-
if FileTest.directory?(path)
|
22
|
-
begin
|
23
|
-
Dir.unlink(path)
|
24
|
-
rescue # Security Exception for Content.IE
|
25
|
-
end
|
26
|
-
else
|
27
|
-
begin
|
28
|
-
File.unlink(path)
|
29
|
-
rescue #Security exception index.dat etc.
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
class WatirHelper
|
37
|
-
#taken from shlObj.h used in win32 SHGetSpecialFolderLocation
|
38
|
-
#define CSIDL_INTERNET_CACHE 0x0020
|
39
|
-
#define CSIDL_COOKIES 0x0021
|
40
|
-
#define CSIDL_HISTORY 0x0022
|
41
|
-
COOKIES = 0x0021
|
42
|
-
INTERNET_CACHE = 0x0020
|
43
|
-
|
44
|
-
def WatirHelper.getSpecialFolderLocation(specFolderName)
|
45
|
-
shell = WIN32OLE.new('Shell.Application')
|
46
|
-
folder = shell.Namespace(specFolderName)
|
47
|
-
folderItem = folder.Self
|
48
|
-
folderPath = folderItem.Path
|
49
|
-
end
|
50
|
-
def WatirHelper.deleteSpecialFolderContents(specFolderName)
|
51
|
-
Dir.rm_rf(self.getSpecialFolderLocation(specFolderName))
|
52
|
-
end
|
53
|
-
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
@@ -1,81 +0,0 @@
|
|
1
|
-
module Watir
|
2
|
-
# this class is the super class for the iterator classes (buttons, links, spans etc
|
3
|
-
# it would normally only be accessed by the iterator methods (spans, links etc) of IE
|
4
|
-
class ElementCollections
|
5
|
-
include Enumerable
|
6
|
-
|
7
|
-
# Super class for all the iterator classes
|
8
|
-
# * container - an instance of an IE object
|
9
|
-
def initialize(container, how, what)
|
10
|
-
if how == :index || (how.is_a?(Hash) && how[:index])
|
11
|
-
_how = what ? "#{how.inspect}, #{what.inspect}" : "#{how.inspect}"
|
12
|
-
raise Exception::MissingWayOfFindingObjectException,
|
13
|
-
"#{self.class} does not support attribute :index in #{_how}"
|
14
|
-
end
|
15
|
-
|
16
|
-
@container = container
|
17
|
-
@how = how
|
18
|
-
@what = what
|
19
|
-
@length = length
|
20
|
-
@page_container = container.page_container
|
21
|
-
end
|
22
|
-
|
23
|
-
def length
|
24
|
-
count = 0
|
25
|
-
each {|element| count += 1 }
|
26
|
-
count
|
27
|
-
end
|
28
|
-
|
29
|
-
alias_method :size, :length
|
30
|
-
|
31
|
-
# iterate through each of the elements in the collection in turn
|
32
|
-
def each
|
33
|
-
@container.locator_for(TaggedElementLocator, element_tags, @how, @what, element_class).each {|element| yield element}
|
34
|
-
end
|
35
|
-
|
36
|
-
# allows access to a specific item in the collection
|
37
|
-
def [](n)
|
38
|
-
number = n - Watir::IE.base_index
|
39
|
-
offset = Watir::IE.zero_based_indexing ? (length - 1) : length
|
40
|
-
iterator_object(number) || element_class.new(@container, :index, n)
|
41
|
-
end
|
42
|
-
|
43
|
-
def first
|
44
|
-
iterator_object(0)
|
45
|
-
end
|
46
|
-
|
47
|
-
def last
|
48
|
-
iterator_object(length - 1)
|
49
|
-
end
|
50
|
-
|
51
|
-
def to_s
|
52
|
-
map { |e| e.to_s }.join("\n")
|
53
|
-
end
|
54
|
-
|
55
|
-
def inspect
|
56
|
-
'#<%s:0x%x length=%s container=%s>' % [self.class, hash*2, @length.inspect, @container.inspect]
|
57
|
-
end
|
58
|
-
|
59
|
-
private
|
60
|
-
|
61
|
-
def iterator_object(i)
|
62
|
-
count = 0
|
63
|
-
each do |e|
|
64
|
-
return e if (i >= 0 && count == i) || (i < 0 && count == length + i)
|
65
|
-
count += 1
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
def element_class
|
70
|
-
Watir.const_get self.class.name.split("::").last.chop
|
71
|
-
end
|
72
|
-
|
73
|
-
def element_tags
|
74
|
-
tags = @how.is_a?(Hash) && @how[:tag_name] ? [@how[:tag_name].upcase] :
|
75
|
-
element_class.const_defined?(:TAG) ? [element_class::TAG] :
|
76
|
-
element_class.const_defined?(:TAGS) ? element_class::TAGS :
|
77
|
-
[element_class.name.split("::").last.upcase]
|
78
|
-
tags
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
data/lib/watir/html_element.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
# This is a generic HTML Element that is used to
|
2
|
-
# locate all elements that share an attribute. The
|
3
|
-
# most common example would be finding elements that
|
4
|
-
# all share the same class.
|
5
|
-
module Watir
|
6
|
-
class HTMLElement < Element
|
7
|
-
TAG = "*"
|
8
|
-
|
9
|
-
def initialize(container, how, what)
|
10
|
-
set_container container
|
11
|
-
@how = how
|
12
|
-
@what = what
|
13
|
-
if how == :index
|
14
|
-
raise MissingWayOfFindingObjectException,
|
15
|
-
"#{self.class} does not support attribute #{@how}"
|
16
|
-
end
|
17
|
-
super nil
|
18
|
-
end
|
19
|
-
|
20
|
-
Watir::Container.module_eval do
|
21
|
-
def element(how={}, what=nil)
|
22
|
-
HTMLElement.new(self, how, what)
|
23
|
-
end
|
24
|
-
|
25
|
-
def elements(how={}, what=nil)
|
26
|
-
HTMLElements.new(self, how, what)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
data/unittests/defer_test.rb
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
# tests of deferring when a Watir object is bound to a com object (lazy evaluation)
|
2
|
-
|
3
|
-
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') unless $SETUP_LOADED
|
4
|
-
require 'unittests/setup'
|
5
|
-
|
6
|
-
class TC_Defer < Test::Unit::TestCase
|
7
|
-
def teardown
|
8
|
-
@new_browser.close if defined?(@new_browser)
|
9
|
-
browser.goto('about:blank')
|
10
|
-
end
|
11
|
-
tag_method :test_binding_to_newly_loaded_page, :fails_on_firefox, :fails_on_ie, :attach
|
12
|
-
def test_binding_to_newly_loaded_page
|
13
|
-
@new_browser = Watir::Browser.new
|
14
|
-
text_field = @new_browser.text_field(:name, 'text1')
|
15
|
-
button = @new_browser.button(:value, 'Clear Events Box')
|
16
|
-
div = @new_browser.div(:name, 'divvy')
|
17
|
-
@new_browser.goto($htmlRoot + "textfields1.html")
|
18
|
-
assert_equal('Hello World', text_field.value)
|
19
|
-
assert_equal('Clear Events Box', button.value)
|
20
|
-
assert_equal('Div Text', div.text)
|
21
|
-
end
|
22
|
-
tag_method :test_binding_to_refreshed_page, :fails_on_ie
|
23
|
-
def test_binding_to_refreshed_page
|
24
|
-
goto_page "textfields1.html"
|
25
|
-
text_field = browser.text_field(:name, 'text1')
|
26
|
-
button = browser.button(:value, 'Clear Events Box')
|
27
|
-
div = browser.div(:name, 'divvy')
|
28
|
-
browser.refresh
|
29
|
-
assert_equal('Hello World', text_field.value)
|
30
|
-
assert(text_field.enabled?)
|
31
|
-
assert_equal('Clear Events Box', button.value)
|
32
|
-
assert_equal('Div Text', div.text)
|
33
|
-
end
|
34
|
-
tag_method :test_exists, :fails_on_firefox, :fails_on_ie, :attach
|
35
|
-
def test_exists
|
36
|
-
@new_browser = Watir::Browser.new
|
37
|
-
text_field = @new_browser.text_field(:name, 'text1')
|
38
|
-
button = @new_browser.button(:value, 'Clear Events Box')
|
39
|
-
div = @new_browser.div(:name, 'divvy')
|
40
|
-
assert_false(text_field.exists?)
|
41
|
-
assert_false(button.exists?)
|
42
|
-
@new_browser.goto($htmlRoot + "textfields1.html")
|
43
|
-
assert(text_field.exists?)
|
44
|
-
assert(button.exists?)
|
45
|
-
assert(div.exists?)
|
46
|
-
end
|
47
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') unless $SETUP_LOADED
|
2
|
-
require 'unittests/setup'
|
3
|
-
|
4
|
-
class TC_MultipleSpecifiers < Test::Unit::TestCase
|
5
|
-
include Watir::Exception
|
6
|
-
|
7
|
-
def setup
|
8
|
-
goto_page "multiple_specifiers.html"
|
9
|
-
end
|
10
|
-
|
11
|
-
%w[form table cell row button file_field text_field
|
12
|
-
hidden select_list checkbox radio link image element div].each do |element|
|
13
|
-
class_eval %Q{
|
14
|
-
def test_#{element}
|
15
|
-
assert "one", browser.#{element}(:name => "test#{element}", :class => "one").class_name
|
16
|
-
assert "two", browser.#{element}(:name => "test#{element}", :class => "two").class_name
|
17
|
-
assert_raises(UnknownObjectException) {browser.#{element}(:name => "nonexistent", :class => "one").class_name}
|
18
|
-
end
|
19
|
-
}
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_frame
|
23
|
-
goto_page "frame_buttons.html"
|
24
|
-
assert "buttons1.html", browser.frame(:name => /buttonFrame/, :src => "buttons1.html").src
|
25
|
-
assert "blankpage.html", browser.frame(:name => /buttonFrame/, :src => "blankpage.html").src
|
26
|
-
assert_raises(UnknownObjectException) {browser.frame(:name => "nonexistent", :src => "buttons1.html").src}
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
@@ -1,117 +0,0 @@
|
|
1
|
-
# feature tests for Watir::Table#to_a and Watir::TableRow#to_a
|
2
|
-
|
3
|
-
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') unless $SETUP_LOADED
|
4
|
-
require 'unittests/setup'
|
5
|
-
|
6
|
-
class TC_Table_TableRow_to_a < Test::Unit::TestCase
|
7
|
-
|
8
|
-
def setup
|
9
|
-
goto_page "table_and_tablerow_to_a.html"
|
10
|
-
end
|
11
|
-
|
12
|
-
def test_table_to_a_works_with_regular_table
|
13
|
-
expected_table = [
|
14
|
-
["1", "2", "3"],
|
15
|
-
["4", "5", "6"],
|
16
|
-
["7", "8", "9"]
|
17
|
-
]
|
18
|
-
assert_equal(expected_table, browser.table(:id => "normal").to_a)
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_table_to_a_works_with_table_with_headers
|
22
|
-
expected_table = [
|
23
|
-
["1", "2", "3", "4"],
|
24
|
-
["5", "6", "7", "8"],
|
25
|
-
["9", "10", "11", "12"]
|
26
|
-
]
|
27
|
-
assert_equal(expected_table, browser.table(:id => "headers").to_a)
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_table_to_a_works_with_nested_tables
|
31
|
-
expected_table =
|
32
|
-
[
|
33
|
-
["1", "2"],
|
34
|
-
[[["11", "12"],
|
35
|
-
["13", "14"]], "3"]
|
36
|
-
]
|
37
|
-
assert_equal(expected_table, browser.table(:id => "nested").to_a(2))
|
38
|
-
end
|
39
|
-
|
40
|
-
def test_table_to_a_works_with_nested_table_with_non_direct_child
|
41
|
-
expected_table =
|
42
|
-
[
|
43
|
-
["1", "2"],
|
44
|
-
[[["11", "12"],
|
45
|
-
["13", "14"]], "3"]
|
46
|
-
]
|
47
|
-
|
48
|
-
assert_equal(expected_table, browser.table(:id => "nestednondirectchild").to_a(2))
|
49
|
-
end
|
50
|
-
|
51
|
-
def test_table_to_a_works_with_deep_nested_tables
|
52
|
-
expected_table =
|
53
|
-
[
|
54
|
-
["1", "2"],
|
55
|
-
[[["11", "12"],
|
56
|
-
[[["404", "405"],
|
57
|
-
["406", "407"]], "14"]], "3"]
|
58
|
-
]
|
59
|
-
assert_equal(expected_table, browser.table(:id => "deepnested").to_a(3))
|
60
|
-
end
|
61
|
-
|
62
|
-
def test_table_to_a_works_with_colspan
|
63
|
-
expected_table =
|
64
|
-
[
|
65
|
-
["1", "2"],
|
66
|
-
["3"]
|
67
|
-
]
|
68
|
-
assert_equal(expected_table, browser.table(:id => "colspan").to_a)
|
69
|
-
end
|
70
|
-
|
71
|
-
def test_table_to_a_works_with_rowspan
|
72
|
-
expected_table =
|
73
|
-
[
|
74
|
-
["1", "2"],
|
75
|
-
["3", "4"],
|
76
|
-
["5"]
|
77
|
-
]
|
78
|
-
assert_equal(expected_table, browser.table(:id => "rowspan").to_a)
|
79
|
-
end
|
80
|
-
|
81
|
-
def test_tablerow_to_a_works_with_regular_row
|
82
|
-
first_row = browser.table(:id => "normal")[0]
|
83
|
-
assert_equal(["1", "2", "3"], first_row.to_a)
|
84
|
-
end
|
85
|
-
|
86
|
-
def test_tablerow_to_a_works_with_headers_in_row
|
87
|
-
first_row = browser.table(:id => "headers")[0]
|
88
|
-
assert_equal(["1", "2", "3", "4"], first_row.to_a)
|
89
|
-
end
|
90
|
-
|
91
|
-
def test_tablerow_to_a_works_with_nested_tables
|
92
|
-
second_row = browser.table(:id => "nested")[1]
|
93
|
-
assert_equal([[["11", "12"], ["13", "14"]], "3"], second_row.to_a(2))
|
94
|
-
end
|
95
|
-
|
96
|
-
def test_tablerow_to_a_works_with_deep_nested_tables
|
97
|
-
second_row = browser.table(:id => "deepnested")[1]
|
98
|
-
expected_row = [[["11", "12"],
|
99
|
-
[[["404", "405"], ["406", "407"]], "14"]], "3"]
|
100
|
-
assert_equal(expected_row, second_row.to_a(3))
|
101
|
-
end
|
102
|
-
|
103
|
-
def test_tablerow_to_a_works_with_colspan
|
104
|
-
second_row = browser.table(:id => "colspan")[1]
|
105
|
-
assert_equal(["3"], second_row.to_a)
|
106
|
-
end
|
107
|
-
|
108
|
-
def test_tablerow_to_a_works_with_rowspan
|
109
|
-
t = browser.table(:id => "rowspan")
|
110
|
-
second_row = t[1]
|
111
|
-
assert_equal(["3", "4"], second_row.to_a)
|
112
|
-
|
113
|
-
third_row = t[2]
|
114
|
-
assert_equal(["5"], third_row.to_a)
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
@@ -1,53 +0,0 @@
|
|
1
|
-
# unit tests for iedialog.dll and customized win32ole.so
|
2
|
-
|
3
|
-
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..') unless $SETUP_LOADED
|
4
|
-
require 'unittests/setup'
|
5
|
-
require 'Win32API'
|
6
|
-
|
7
|
-
class TC_IEDialog < Test::Unit::TestCase
|
8
|
-
include Watir
|
9
|
-
|
10
|
-
# this will find the IEDialog.dll file in its build location
|
11
|
-
@@iedialog_file = (File.expand_path(File.dirname(__FILE__)) + "/../../lib/watir/IEDialog/Release/IEDialog.dll").gsub('/', '\\')
|
12
|
-
|
13
|
-
# commented out because it currently requires a manual click
|
14
|
-
# a better idea would be to automate the click...
|
15
|
-
def xtest_connect_to_iedialog
|
16
|
-
# make sure we can connect to the IEDialog.dll
|
17
|
-
fnShowString = Win32API.new(@@iedialog_file, 'ShowString', ['p'], 'v')
|
18
|
-
fnShowString.call("from ruby!") # blocks
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_find_window
|
22
|
-
goto_page "pass.html"
|
23
|
-
fnFindWindow = Win32API.new('user32.dll', 'FindWindow', ['p', 'p'], 'l')
|
24
|
-
hwnd = fnFindWindow.call(nil, "Pass Page - Microsoft Internet Explorer")
|
25
|
-
assert(hwnd != 0)
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_all
|
29
|
-
goto_page "pass.html"
|
30
|
-
|
31
|
-
fnFindWindow = Win32API.new('user32.dll', 'FindWindow', ['p', 'p'], 'l')
|
32
|
-
hwnd = fnFindWindow.call(nil, "Pass Page - Microsoft Internet Explorer")
|
33
|
-
|
34
|
-
fnGetUnknown = Win32API.new(@@iedialog_file, 'GetUnknown', ['l', 'p'], 'v')
|
35
|
-
intPointer = " " * 4 # will contain the int value of the IUnknown*
|
36
|
-
fnGetUnknown.call(hwnd, intPointer)
|
37
|
-
|
38
|
-
intArray = intPointer.unpack('L')
|
39
|
-
intUnknown = intArray.first
|
40
|
-
|
41
|
-
assert(intUnknown > 0)
|
42
|
-
|
43
|
-
htmlDoc = nil
|
44
|
-
assert_nothing_raised{htmlDoc = WIN32OLE.connect_unknown(intUnknown)}
|
45
|
-
scriptEngine = htmlDoc.Script
|
46
|
-
|
47
|
-
# now we get the HTML DOM object!
|
48
|
-
doc2 = scriptEngine.document
|
49
|
-
body = doc2.body
|
50
|
-
assert_match(/^PASS/, body.innerHTML.strip)
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|