ie_handler 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,147 @@
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
data/lib/ie_handler.rb CHANGED
@@ -2,5 +2,5 @@ $:.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.4'
5
+ VERSION = '0.0.5'
6
6
  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
4
+ version: 0.0.5
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: &76470940 !ruby/object:Gem::Requirement
16
+ requirement: &83809270 !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: *76470940
24
+ version_requirements: *83809270
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: newgem
27
- requirement: &76470700 !ruby/object:Gem::Requirement
27
+ requirement: &83809030 !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: *76470700
35
+ version_requirements: *83809030
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: hoe
38
- requirement: &76470460 !ruby/object:Gem::Requirement
38
+ requirement: &83808790 !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: *76470460
46
+ version_requirements: *83808790
47
47
  description: ! 'IE Handler enable you to handle IE using Ruby.
48
48
 
49
49
  It has simple syntax and strong methods.
@@ -67,6 +67,7 @@ files:
67
67
  - README.rdoc
68
68
  - Rakefile
69
69
  - lib/ie_handler.rb
70
+ - lib/ie_handler/ie_page.rb
70
71
  - script/console
71
72
  - script/destroy
72
73
  - script/generate