ie_handler 0.0.5 → 0.0.6
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.
- data/lib/ie_handler.rb +144 -1
- metadata +7 -8
- data/lib/ie_handler/ie_page.rb +0 -147
data/lib/ie_handler.rb
CHANGED
@@ -2,5 +2,148 @@ $:.unshift(File.dirname(__FILE__)) unless
|
|
2
2
|
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
3
3
|
|
4
4
|
module IeHandler
|
5
|
-
VERSION = '0.0.
|
5
|
+
VERSION = '0.0.6'
|
6
|
+
|
7
|
+
class IePage
|
8
|
+
IE_APP = "InternetExplorer.Application"
|
9
|
+
|
10
|
+
attr_accessor :doc, :ie
|
11
|
+
|
12
|
+
#instance methods
|
13
|
+
def initialize url
|
14
|
+
@ie = WIN32OLE.new(IE_APP)
|
15
|
+
go url
|
16
|
+
@doc = @ie.document
|
17
|
+
end
|
18
|
+
|
19
|
+
#wait during loading
|
20
|
+
def wait
|
21
|
+
while @ie.Busy == true
|
22
|
+
sleep 1
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
#move to the specified url
|
27
|
+
def go url, visible = true
|
28
|
+
@ie.Navigate(url)
|
29
|
+
@ie.Visible=visible
|
30
|
+
wait
|
31
|
+
end
|
32
|
+
|
33
|
+
def back
|
34
|
+
@ie.GoBack
|
35
|
+
wait
|
36
|
+
end
|
37
|
+
|
38
|
+
def close
|
39
|
+
@ie.Quit
|
40
|
+
end
|
41
|
+
|
42
|
+
#initalization. this is configulation which you should ie.find
|
43
|
+
#when you access DOM.
|
44
|
+
def find
|
45
|
+
@doc = @ie.document
|
46
|
+
@start = nil
|
47
|
+
self
|
48
|
+
end
|
49
|
+
|
50
|
+
#Saved Access
|
51
|
+
#Save ie object
|
52
|
+
#ex) save tr and use td using saved tr object.
|
53
|
+
def sa
|
54
|
+
unless @start
|
55
|
+
@start = @doc
|
56
|
+
else
|
57
|
+
@doc = @start
|
58
|
+
end
|
59
|
+
self
|
60
|
+
end
|
61
|
+
|
62
|
+
def each
|
63
|
+
yield self unless @doc.respond_to?(:each)
|
64
|
+
@doc.each do |d|
|
65
|
+
obj = self.clone
|
66
|
+
obj.ie = @ie
|
67
|
+
obj.doc = d
|
68
|
+
yield obj
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
#accessor methods map
|
73
|
+
@accessor = {
|
74
|
+
:id => :getElementById,
|
75
|
+
:tag => :getElementsByTagName,
|
76
|
+
:name => :getElementsByName,
|
77
|
+
:clazz => :getElementsByClassName
|
78
|
+
}
|
79
|
+
#id,tag,name,clazz method dinamic definition
|
80
|
+
@accessor.each do |name, method|
|
81
|
+
define_method name do |elem, item_num=nil|
|
82
|
+
return nil if @doc.nil?
|
83
|
+
items = @doc.send(method, elem)
|
84
|
+
@doc = (!! item_num) ? items.item(item_num) : items
|
85
|
+
self
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def click
|
90
|
+
@doc.click nil
|
91
|
+
wait
|
92
|
+
end
|
93
|
+
|
94
|
+
def html content=nil
|
95
|
+
if content
|
96
|
+
@doc.appendChild(@ie.document.createTextNode(content))
|
97
|
+
else
|
98
|
+
@doc.innerHTML
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
#DOM new element addition
|
103
|
+
def add obj
|
104
|
+
@doc.appendChild(obj.doc)
|
105
|
+
end
|
106
|
+
|
107
|
+
def attr name, value=nil
|
108
|
+
unless value
|
109
|
+
@doc.getAttribute(name)
|
110
|
+
else
|
111
|
+
@doc.setAttribute(name, value)
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
#for inspect methods
|
116
|
+
def methods search_word=nil
|
117
|
+
mtds = @doc.ole_methods.map{|mtd| mtd.to_s}.sort
|
118
|
+
mtds = mtds.grep search_word if search_word
|
119
|
+
mtds
|
120
|
+
end
|
121
|
+
|
122
|
+
def method name
|
123
|
+
@ie.ole_method_help(name).params.each do |param|
|
124
|
+
str = ""
|
125
|
+
str.concat "[in] " if param.input?
|
126
|
+
str.concat "[out] " if param.output?
|
127
|
+
str.concat "[optional] " if param.optional?
|
128
|
+
str.concat "[retval] " if param.retval?
|
129
|
+
str.concat param.name
|
130
|
+
str.concat " = #{param.default}" if param.default
|
131
|
+
str.concat " As #{param.ole_type}"
|
132
|
+
puts str
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
def method_missing(method_name, *args)
|
137
|
+
@doc.send(method_name, *args)
|
138
|
+
end
|
139
|
+
|
140
|
+
#class methods
|
141
|
+
class << self
|
142
|
+
def make_elem ie_obj, elem_name
|
143
|
+
obj = ie_obj.clone
|
144
|
+
obj.doc = ie_obj.ie.document.createElement(elem_name)
|
145
|
+
obj
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end
|
6
149
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ie_handler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-06-16 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rdoc
|
16
|
-
requirement: &
|
16
|
+
requirement: &73980100 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '3.10'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *73980100
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: newgem
|
27
|
-
requirement: &
|
27
|
+
requirement: &73979860 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 1.5.3
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *73979860
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: hoe
|
38
|
-
requirement: &
|
38
|
+
requirement: &73979620 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '3.0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *73979620
|
47
47
|
description: ! 'IE Handler enable you to handle IE using Ruby.
|
48
48
|
|
49
49
|
It has simple syntax and strong methods.
|
@@ -67,7 +67,6 @@ files:
|
|
67
67
|
- README.rdoc
|
68
68
|
- Rakefile
|
69
69
|
- lib/ie_handler.rb
|
70
|
-
- lib/ie_handler/ie_page.rb
|
71
70
|
- script/console
|
72
71
|
- script/destroy
|
73
72
|
- script/generate
|
data/lib/ie_handler/ie_page.rb
DELETED
@@ -1,147 +0,0 @@
|
|
1
|
-
# -*- encoding: UTF-8 -*-
|
2
|
-
require 'win32OLE'
|
3
|
-
|
4
|
-
module IeHandler
|
5
|
-
class IePage
|
6
|
-
IE_APP = "InternetExplorer.Application"
|
7
|
-
|
8
|
-
attr_accessor :doc, :ie
|
9
|
-
|
10
|
-
#instance methods
|
11
|
-
def initialize url
|
12
|
-
@ie = WIN32OLE.new(IE_APP)
|
13
|
-
go url
|
14
|
-
@doc = @ie.document
|
15
|
-
end
|
16
|
-
|
17
|
-
#wait during loading
|
18
|
-
def wait
|
19
|
-
while @ie.Busy == true
|
20
|
-
sleep 1
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
#move to the specified url
|
25
|
-
def go url, visible = true
|
26
|
-
@ie.Navigate(url)
|
27
|
-
@ie.Visible=visible
|
28
|
-
wait
|
29
|
-
end
|
30
|
-
|
31
|
-
def back
|
32
|
-
@ie.GoBack
|
33
|
-
wait
|
34
|
-
end
|
35
|
-
|
36
|
-
def close
|
37
|
-
@ie.Quit
|
38
|
-
end
|
39
|
-
|
40
|
-
#initalization. this is configulation which you should ie.find
|
41
|
-
#when you access DOM.
|
42
|
-
def find
|
43
|
-
@doc = @ie.document
|
44
|
-
@start = nil
|
45
|
-
self
|
46
|
-
end
|
47
|
-
|
48
|
-
#Saved Access
|
49
|
-
#Save ie object
|
50
|
-
#ex) save tr and use td using saved tr object.
|
51
|
-
def sa
|
52
|
-
unless @start
|
53
|
-
@start = @doc
|
54
|
-
else
|
55
|
-
@doc = @start
|
56
|
-
end
|
57
|
-
self
|
58
|
-
end
|
59
|
-
|
60
|
-
def each
|
61
|
-
yield self unless @doc.respond_to?(:each)
|
62
|
-
@doc.each do |d|
|
63
|
-
obj = self.clone
|
64
|
-
obj.ie = @ie
|
65
|
-
obj.doc = d
|
66
|
-
yield obj
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
#accessor methods map
|
71
|
-
@accessor = {
|
72
|
-
:id => :getElementById,
|
73
|
-
:tag => :getElementsByTagName,
|
74
|
-
:name => :getElementsByName,
|
75
|
-
:clazz => :getElementsByClassName
|
76
|
-
}
|
77
|
-
#id,tag,name,clazz method dinamic definition
|
78
|
-
@accessor.each do |name, method|
|
79
|
-
define_method name do |elem, item_num=nil|
|
80
|
-
return nil if @doc.nil?
|
81
|
-
items = @doc.send(method, elem)
|
82
|
-
@doc = (!! item_num) ? items.item(item_num) : items
|
83
|
-
self
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
def click
|
88
|
-
@doc.click nil
|
89
|
-
wait
|
90
|
-
end
|
91
|
-
|
92
|
-
def html content=nil
|
93
|
-
if content
|
94
|
-
@doc.appendChild(@ie.document.createTextNode(content))
|
95
|
-
else
|
96
|
-
@doc.innerHTML
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
#DOM new element addition
|
101
|
-
def add obj
|
102
|
-
@doc.appendChild(obj.doc)
|
103
|
-
end
|
104
|
-
|
105
|
-
def attr name, value=nil
|
106
|
-
unless value
|
107
|
-
@doc.getAttribute(name)
|
108
|
-
else
|
109
|
-
@doc.setAttribute(name, value)
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
#for inspect methods
|
114
|
-
def methods search_word=nil
|
115
|
-
mtds = @doc.ole_methods.map{|mtd| mtd.to_s}.sort
|
116
|
-
mtds = mtds.grep search_word if search_word
|
117
|
-
mtds
|
118
|
-
end
|
119
|
-
|
120
|
-
def method name
|
121
|
-
@ie.ole_method_help(name).params.each do |param|
|
122
|
-
str = ""
|
123
|
-
str.concat "[in] " if param.input?
|
124
|
-
str.concat "[out] " if param.output?
|
125
|
-
str.concat "[optional] " if param.optional?
|
126
|
-
str.concat "[retval] " if param.retval?
|
127
|
-
str.concat param.name
|
128
|
-
str.concat " = #{param.default}" if param.default
|
129
|
-
str.concat " As #{param.ole_type}"
|
130
|
-
puts str
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
def method_missing(method_name, *args)
|
135
|
-
@doc.send(method_name, *args)
|
136
|
-
end
|
137
|
-
|
138
|
-
#class methods
|
139
|
-
class << self
|
140
|
-
def make_elem ie_obj, elem_name
|
141
|
-
obj = ie_obj.clone
|
142
|
-
obj.doc = ie_obj.ie.document.createElement(elem_name)
|
143
|
-
obj
|
144
|
-
end
|
145
|
-
end
|
146
|
-
end
|
147
|
-
end
|