safariwatir 0.3.1 → 0.3.2

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.
Files changed (3) hide show
  1. data/safariwatir.rb +8 -14
  2. data/safariwatir/scripter.rb +14 -4
  3. metadata +2 -2
data/safariwatir.rb CHANGED
@@ -107,6 +107,9 @@ module Watir
107
107
 
108
108
  def operate(&block)
109
109
  scripter_suffix = OPERATIONS[how]
110
+ if scripter_suffix.kind_of? Hash
111
+ scripter_suffix = scripter_suffix[name]
112
+ end
110
113
  if scripter_suffix.nil?
111
114
  raise "SafariWatir does not currently support finding by #{how}"
112
115
  end
@@ -118,10 +121,11 @@ module Watir
118
121
  :index => "by_index",
119
122
  :class => "by_class",
120
123
  :name => "by_name",
121
- :text => "on_link",
124
+ :text => { "Link" => "on_link", "Label" => "by_text" },
122
125
  :url => "on_link",
123
126
  :value => "by_input_value",
124
- :caption => "by_input_value"
127
+ :caption => "by_input_value",
128
+ :src => "by_src",
125
129
  }
126
130
  end
127
131
 
@@ -166,13 +170,9 @@ module Watir
166
170
  end
167
171
 
168
172
  class Image < HtmlElement
169
- def tag; "IMG"; end
170
-
171
- protected
173
+ include Clickable
172
174
 
173
- def operate_by_src(&block)
174
- @scripter.operate_by(self, 'src', &block)
175
- end
175
+ def tag; "IMG"; end
176
176
  end
177
177
 
178
178
  class Button < InputElement
@@ -203,12 +203,6 @@ module Watir
203
203
 
204
204
  class Label < ContentElement
205
205
  def tag; "LABEL"; end
206
-
207
- protected
208
-
209
- def operate_by_text(&block)
210
- @scripter.operate_by(self, 'innerText', &block)
211
- end
212
206
  end
213
207
 
214
208
  class Link < ContentElement
@@ -247,19 +247,21 @@ element.setSelectionRange(element.value.length, element.value.length);|
247
247
 
248
248
  def click_element(element = @element)
249
249
  page_load do
250
+ # Not sure if these events should be either/or. But if you have an image with an onclick, it fires twice without the else clause.
250
251
  execute(element.operate { %|
251
252
  if (element.click) {
252
253
  element.click();
253
254
  } else {
254
- var event = DOCUMENT.createEvent('MouseEvents');
255
- event.initEvent('click', true, true);
256
- element.dispatchEvent(event);
257
-
258
255
  if (element.onclick) {
259
256
  var event = DOCUMENT.createEvent('HTMLEvents');
260
257
  event.initEvent('click', true, true);
261
258
  element.onclick(event);
259
+ } else {
260
+ var event = DOCUMENT.createEvent('MouseEvents');
261
+ event.initEvent('click', true, true);
262
+ element.dispatchEvent(event);
262
263
  }
264
+
263
265
  }| })
264
266
  end
265
267
  end
@@ -392,6 +394,14 @@ var element = elements[0];|, yield)
392
394
  js.operate(%|var element = document.getElementsByTagName('#{element.tag}')[#{element.what-1}];|, yield)
393
395
  end
394
396
 
397
+ def operate_by_src(element, &block)
398
+ operate_by(element, 'src', &block)
399
+ end
400
+
401
+ def operate_by_text(element, &block)
402
+ operate_by(element, 'innerText', &block)
403
+ end
404
+
395
405
  def operate_by(element, attribute)
396
406
  js.operate(%|var elements = document.getElementsByTagName('#{element.tag}');
397
407
  var element = undefined;
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: safariwatir
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dave Hoover
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-10-22 00:00:00 -05:00
12
+ date: 2008-10-28 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency