watir-webdriver 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,46 +1,56 @@
1
- = watir-webdriver
1
+ watir-webdriver
2
+ ===============
2
3
 
3
4
  Watir implementation built on WebDriver's Ruby bindings.
4
5
  See http://rubyforge.org/pipermail/wtr-development/2009-October/001313.html.
5
6
 
6
- = API docs
7
+ API docs
8
+ --------
7
9
 
8
10
  http://jarib.github.com/watir-webdriver/doc/
9
11
 
10
- = Example
12
+ Example
13
+ -------
14
+ ```ruby
11
15
 
12
- require 'watir-webdriver'
16
+ require 'watir-webdriver'
13
17
 
14
- browser = Watir::Browser.new :firefox
15
- browser.goto "http://google.com"
16
- browser.text_field(:name => 'q').set("WebDriver rocks!")
17
- browser.button(:name => 'btnG').click
18
- puts browser.url
19
- browser.close
18
+ browser = Watir::Browser.new :firefox
19
+ browser.goto "http://google.com"
20
+ browser.text_field(:name => 'q').set("WebDriver rocks!")
21
+ browser.button(:name => 'btnG').click
22
+ puts browser.url
23
+ browser.close
24
+ ```
20
25
 
21
- = Description
26
+ Description
27
+ -----------
22
28
 
23
29
  The file in lib/watir/elements/generated.rb is autogenerated from the HTML5 spec. This is done by extracting the IDL parts from the spec and processing them with the WebIDL gem (link below).
24
30
 
25
- = Specs
31
+ Specs
32
+ -----
26
33
 
27
34
  watir-webdriver uses the watir2 branch of watirspec for testing. After cloning, you should fetch the submodule:
28
35
 
29
- git submodule init && git submodule update
36
+ git submodule init && git submodule update
30
37
 
31
38
  Specs specific to watir-webdriver are found in spec/*_spec.rb, with watirspec in spec/watirspec.
32
39
 
33
- = See also
40
+ See also
41
+ --------
34
42
 
35
43
  * http://github.com/jarib/webidl
36
44
  * http://github.com/jarib/watirspec/tree/watir2
37
45
  * http://selenium.googlecode.com
38
46
 
39
- = Dependencies
47
+ Dependencies
48
+ ------------
40
49
 
41
50
  * selenium-webdriver
42
51
 
43
- == Note on Patches/Pull Requests
52
+ Note on Patches/Pull Requests
53
+ -----------------------------
44
54
 
45
55
  * Fork the project.
46
56
  * Make your feature addition or bug fix.
@@ -50,6 +60,7 @@ Specs specific to watir-webdriver are found in spec/*_spec.rb, with watirspec in
50
60
  (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
51
61
  * Send me a pull request. Bonus points for topic branches.
52
62
 
53
- == Copyright
63
+ Copyright
64
+ ---------
54
65
 
55
66
  Copyright (c) 2009-2011 Jari Bakken. See LICENSE for details.
@@ -0,0 +1,15 @@
1
+ function(){return function(){var l=this;
2
+ function m(a){var c=typeof a;if(c=="object")if(a){if(a instanceof Array)return"array";else if(a instanceof Object)return c;var b=Object.prototype.toString.call(a);if(b=="[object Window]")return"object";if(b=="[object Array]"||typeof a.length=="number"&&typeof a.splice!="undefined"&&typeof a.propertyIsEnumerable!="undefined"&&!a.propertyIsEnumerable("splice"))return"array";if(b=="[object Function]"||typeof a.call!="undefined"&&typeof a.propertyIsEnumerable!="undefined"&&!a.propertyIsEnumerable("call"))return"function"}else return"null";else if(c==
3
+ "function"&&typeof a.call=="undefined")return"object";return c}function n(a,c){function b(){}b.prototype=c.prototype;a.i=c.prototype;a.prototype=new b};function o(a){this.stack=Error().stack||"";if(a)this.message=String(a)}n(o,Error);function aa(a){for(var c=1;c<arguments.length;c++){var b=String(arguments[c]).replace(/\$/g,"$$$$");a=a.replace(/\%s/,b)}return a}
4
+ function p(a,c){var b=0,d=String(a).replace(/^[\s\xa0]+|[\s\xa0]+$/g,"").split("."),f=String(c).replace(/^[\s\xa0]+|[\s\xa0]+$/g,"").split("."),k=Math.max(d.length,f.length);for(var j=0;b==0&&j<k;j++){var e=d[j]||"",g=f[j]||"",q=RegExp("(\\d*)(\\D*)","g"),s=RegExp("(\\d*)(\\D*)","g");do{var h=q.exec(e)||["","",""],i=s.exec(g)||["","",""];if(h[0].length==0&&i[0].length==0)break;b=r(h[1].length==0?0:parseInt(h[1],10),i[1].length==0?0:parseInt(i[1],10))||r(h[2].length==0,i[2].length==0)||r(h[2],i[2])}while(b==
5
+ 0)}return b}function r(a,c){if(a<c)return-1;else if(a>c)return 1;return 0};function t(a,c){c.unshift(a);o.call(this,aa.apply(null,c));c.shift();this.l=a}n(t,o);function ba(a,c){if(!a){var b=Array.prototype.slice.call(arguments,2),d="Assertion failed";if(c){d+=": "+c;var f=b}throw new t(""+d,f||[]);}return a};var u=Array.prototype,ca=u.indexOf?function(a,c,b){ba(a.length!=null);return u.indexOf.call(a,c,b)}:function(a,c,b){b=b==null?0:b<0?Math.max(0,a.length+b):b;if(typeof a=="string"){if(typeof c!="string"||c.length!=1)return-1;return a.indexOf(c,b)}for(b=b;b<a.length;b++)if(b in a&&a[b]===c)return b;return-1};var v,w,x,y;function z(){return l.navigator?l.navigator.userAgent:null}y=x=w=v=false;var A;if(A=z()){var da=l.navigator;v=A.indexOf("Opera")==0;w=!v&&A.indexOf("MSIE")!=-1;x=!v&&A.indexOf("WebKit")!=-1;y=!v&&!x&&da.product=="Gecko"}var B=v,C=w,D=y,E=x,F;
6
+ a:{var G="",H;if(B&&l.opera){var I=l.opera.version;G=typeof I=="function"?I():I}else{if(D)H=/rv\:([^\);]+)(\)|;)/;else if(C)H=/MSIE\s+([^\);]+)(\)|;)/;else if(E)H=/WebKit\/(\S+)/;if(H){var J=H.exec(z());G=J?J[1]:""}}if(C){var K,L=l.document;K=L?L.documentMode:undefined;if(K>parseFloat(G)){F=String(K);break a}}F=G}var M={};var ea;!C||M["9"]||(M["9"]=p(F,"9")>=0);C&&(M["9"]||(M["9"]=p(F,"9")>=0));function N(a,c){this.x=a!==undefined?a:0;this.y=c!==undefined?c:0}N.prototype.toString=function(){return"("+this.x+", "+this.y+")"};function O(a){return a?new fa(P(a)):ea||(ea=new fa)}function P(a){return a.nodeType==9?a:a.ownerDocument||a.document}function fa(a){this.e=a||l.document||document}function ga(a){a=!E&&a.e.compatMode=="CSS1Compat"?a.e.documentElement:a.e.body;return new N(a.scrollLeft,a.scrollTop)};var Q="StopIteration"in l?l.StopIteration:Error("StopIteration");function ha(){}ha.prototype.next=function(){throw Q;};function R(a,c,b,d,f){this.a=!!c;a&&S(this,a,d);this.d=f!=undefined?f:this.c||0;if(this.a)this.d*=-1;this.h=!b}n(R,ha);R.prototype.b=null;R.prototype.c=0;R.prototype.g=false;function S(a,c,b,d){if(a.b=c)a.c=typeof b=="number"?b:a.b.nodeType!=1?0:a.a?-1:1;if(typeof d=="number")a.d=d}
7
+ R.prototype.next=function(){var a;if(this.g){if(!this.b||this.h&&this.d==0)throw Q;a=this.b;var c=this.a?-1:1;if(this.c==c){var b=this.a?a.lastChild:a.firstChild;b?S(this,b):S(this,a,c*-1)}else(b=this.a?a.previousSibling:a.nextSibling)?S(this,b):S(this,a.parentNode,c*-1);this.d+=this.c*(this.a?-1:1)}else this.g=true;a=this.b;if(!this.b)throw Q;return a};
8
+ R.prototype.splice=function(){var a=this.b,c=this.a?1:-1;if(this.c==c){this.c=c*-1;this.d+=this.c*(this.a?-1:1)}this.a=!this.a;R.prototype.next.call(this);this.a=!this.a;c=arguments[0];var b=m(c);c=b=="array"||b=="object"&&typeof c.length=="number"?arguments[0]:arguments;for(b=c.length-1;b>=0;b--)a.parentNode&&a.parentNode.insertBefore(c[b],a.nextSibling);a&&a.parentNode&&a.parentNode.removeChild(a)};function T(a,c,b,d){R.call(this,a,c,b,null,d)}n(T,R);T.prototype.next=function(){do T.i.next.call(this);while(this.c==-1);return this.b};function U(a,c){var b;a:{b=P(a);if(b.defaultView&&b.defaultView.getComputedStyle)if(b=b.defaultView.getComputedStyle(a,null)){b=b[c]||b.getPropertyValue(c);break a}b=""}return b||(a.currentStyle?a.currentStyle[c]:null)||a.style[c]}function ia(a){var c=a.getBoundingClientRect();if(C){a=a.ownerDocument;c.left-=a.documentElement.clientLeft+a.body.clientLeft;c.top-=a.documentElement.clientTop+a.body.clientTop}return c}
9
+ function ja(a){if(C)return a.offsetParent;var c=P(a),b=U(a,"position"),d=b=="fixed"||b=="absolute";for(a=a.parentNode;a&&a!=c;a=a.parentNode){b=U(a,"position");d=d&&b=="static"&&a!=c.documentElement&&a!=c.body;if(!d&&(a.scrollWidth>a.clientWidth||a.scrollHeight>a.clientHeight||b=="fixed"||b=="absolute"))return a}return null};String.fromCharCode(160);var ka=C?1:0,la=["dragstart","dragexit","mouseover","mouseout"];
10
+ function V(a,c,b){var d=P(a),f=d?d.parentWindow||d.defaultView:window,k=new N;if(a.nodeType==1)if(a.getBoundingClientRect){var j=ia(a);k.x=j.left;k.y=j.top}else{j=ga(O(a));var e,g=P(a),q=U(a,"position"),s=D&&g.getBoxObjectFor&&!a.getBoundingClientRect&&q=="absolute"&&(e=g.getBoxObjectFor(a))&&(e.screenX<0||e.screenY<0),h=new N(0,0),i;e=g?g.nodeType==9?g:P(g):document;if(i=C)i=O(e).e.compatMode!="CSS1Compat";i=i?e.body:e.documentElement;if(a!=i)if(a.getBoundingClientRect){e=ia(a);g=ga(O(g));h.x=e.left+
11
+ g.x;h.y=e.top+g.y}else if(g.getBoxObjectFor&&!s){e=g.getBoxObjectFor(a);g=g.getBoxObjectFor(i);h.x=e.screenX-g.screenX;h.y=e.screenY-g.screenY}else{e=a;do{h.x+=e.offsetLeft;h.y+=e.offsetTop;if(e!=a){h.x+=e.clientLeft||0;h.y+=e.clientTop||0}if(E&&U(e,"position")=="fixed"){h.x+=g.body.scrollLeft;h.y+=g.body.scrollTop;break}e=e.offsetParent}while(e&&e!=a);if(B||E&&q=="absolute")h.y-=g.body.offsetTop;for(e=a;(e=ja(e))&&e!=g.body&&e!=i;){h.x-=e.scrollLeft;if(!B||e.tagName!="TR")h.y-=e.scrollTop}}k.x=h.x-
12
+ j.x;k.y=h.y-j.y}else{j=m(a.f)=="function";h=a;if(a.targetTouches)h=a.targetTouches[0];else if(j&&a.f().targetTouches)h=a.f().targetTouches[0];k.x=h.clientX;k.y=h.clientY}i=b||{};b=(i.x||0)+k.x;k=(i.y||0)+k.y;j=i.button||ka;h=i.bubble||true;g=null;if(ca(la,c)>=0)g=i.related||null;q=!!i.alt;e=!!i.control;s=!!i.shift;i=!!i.meta;if(a.fireEvent&&d&&d.createEventObject){a=d.createEventObject();a.altKey=q;a.j=e;a.metaKey=i;a.shiftKey=s;a.clientX=b;a.clientY=k;a.button=j;a.relatedTarget=g}else{a=d.createEvent("MouseEvents");
13
+ if(a.initMouseEvent)a.initMouseEvent(c,h,true,f,1,0,0,b,k,e,q,s,i,j,g);else{a.initEvent(c,h,true);a.shiftKey=s;a.metaKey=i;a.altKey=q;a.ctrlKey=e;a.button=j}}return a}
14
+ function W(a,c,b){var d=P(a);a=d?d.parentWindow||d.defaultView:window;var f=b||{};b=f.keyCode||0;var k=f.charCode||0,j=!!f.alt,e=!!f.ctrl,g=!!f.shift;f=!!f.meta;if(D){d=d.createEvent("KeyboardEvent");d.initKeyEvent(c,true,true,a,e,j,g,f,b,k)}else{if(C)d=d.createEventObject();else{d=d.createEvent("Events");d.initEvent(c,true,true);d.charCode=k}d.keyCode=b;d.altKey=j;d.ctrlKey=e;d.metaKey=f;d.shiftKey=g}return d}
15
+ function ma(a,c,b){var d=P(a),f=b||{};b=f.bubble!==false;var k=!!f.alt,j=!!f.control,e=!!f.shift;f=!!f.meta;if(a.fireEvent&&d&&d.createEventObject){a=d.createEventObject();a.altKey=k;a.k=j;a.metaKey=f;a.shiftKey=e}else{a=d.createEvent("HTMLEvents");a.initEvent(c,b,true);a.shiftKey=e;a.metaKey=f;a.altKey=k;a.ctrlKey=j}return a}var X={};X.click=V;X.keydown=W;X.keypress=W;X.keyup=W;X.mousedown=V;X.mousemove=V;X.mouseout=V;X.mouseover=V;X.mouseup=V;function na(a,c,b){b=(X[c]||ma)(a,c,b);var d;if(!(d=m(a.fireEvent)=="function")){d=m(a.fireEvent);d=d=="object"||d=="array"||d=="function"}if(d){try{(P(a)?P(a).parentWindow||P(a).defaultView:window).event=b}catch(f){}a=a.fireEvent("on"+c,b)}else a=a.dispatchEvent(b);return a}var Y="_".split("."),Z=l;!(Y[0]in Z)&&Z.execScript&&Z.execScript("var "+Y[0]);for(var $;Y.length&&($=Y.shift());)if(!Y.length&&na!==undefined)Z[$]=na;else Z=Z[$]?Z[$]:Z[$]={};; return this._.apply(null,arguments);}.apply({navigator:typeof window!='undefined'?window.navigator:null}, arguments);}
@@ -0,0 +1,4 @@
1
+ function(){return function(){var d=this;function e(a,b){function c(){}c.prototype=b.prototype;a.b=b.prototype;a.prototype=new c};function f(a){this.stack=Error().stack||"";if(a)this.message=String(a)}e(f,Error);function i(a){for(var b=1;b<arguments.length;b++){var c=String(arguments[b]).replace(/\$/g,"$$$$");a=a.replace(/\%s/,c)}return a}
2
+ function j(a,b){var c=0,A=String(a).replace(/^[\s\xa0]+|[\s\xa0]+$/g,"").split("."),B=String(b).replace(/^[\s\xa0]+|[\s\xa0]+$/g,"").split("."),H=Math.max(A.length,B.length);for(var l=0;c==0&&l<H;l++){var I=A[l]||"",J=B[l]||"",K=RegExp("(\\d*)(\\D*)","g"),L=RegExp("(\\d*)(\\D*)","g");do{var g=K.exec(I)||["","",""],h=L.exec(J)||["","",""];if(g[0].length==0&&h[0].length==0)break;c=k(g[1].length==0?0:parseInt(g[1],10),h[1].length==0?0:parseInt(h[1],10))||k(g[2].length==0,h[2].length==0)||k(g[2],h[2])}while(c==
3
+ 0)}return c}function k(a,b){if(a<b)return-1;else if(a>b)return 1;return 0};e(function(a,b){b.unshift(a);f.call(this,i.apply(null,b));b.shift();this.a=a},f);var m,n,o,p;function q(){return d.navigator?d.navigator.userAgent:null}p=o=n=m=false;var r;if(r=q()){var s=d.navigator;m=r.indexOf("Opera")==0;n=!m&&r.indexOf("MSIE")!=-1;o=!m&&r.indexOf("WebKit")!=-1;p=!m&&!o&&s.product=="Gecko"}var t=n,u=p,v=o,w;
4
+ a:{var x="",y;if(m&&d.opera){var z=d.opera.version;x=typeof z=="function"?z():z}else{if(u)y=/rv\:([^\);]+)(\)|;)/;else if(t)y=/MSIE\s+([^\);]+)(\)|;)/;else if(v)y=/WebKit\/(\S+)/;if(y){var C=y.exec(q());x=C?C[1]:""}}if(t){var D,E=d.document;D=E?E.documentMode:undefined;if(D>parseFloat(x)){w=String(D);break a}}w=x}var F={};!t||F["9"]||(F["9"]=j(w,"9")>=0);t&&(F["9"]||(F["9"]=j(w,"9")>=0));function G(a){if("outerHTML"in a)return a.outerHTML;else{var b=(a.nodeType==9?a:a.ownerDocument||a.document).createElement("div");b.appendChild(a.cloneNode(true));return b.innerHTML}}var M="_".split("."),N=d;!(M[0]in N)&&N.execScript&&N.execScript("var "+M[0]);for(var O;M.length&&(O=M.shift());)if(!M.length&&G!==undefined)N[O]=G;else N=N[O]?N[O]:N[O]={};; return this._.apply(null,arguments);}.apply({navigator:typeof window!='undefined'?window.navigator:null}, arguments);}
@@ -13,13 +13,14 @@ module Watir
13
13
 
14
14
  private
15
15
 
16
- def browserbot(function_name, *arguments)
17
- script = browserbot_script + "return browserbot.#{function_name}.apply(browserbot, arguments);"
18
- driver.execute_script(script, *arguments)
19
- end
16
+ ATOMS = {
17
+ :fireEvent => File.read(File.expand_path("../atoms/fireEvent.js", __FILE__)),
18
+ :getOuterHtml => File.read(File.expand_path("../atoms/getOuterHtml.js", __FILE__))
19
+ }
20
20
 
21
- def browserbot_script
22
- @browserbot_script ||= File.read("#{File.dirname(__FILE__)}/browserbot.js")
21
+ def execute_atom(function_name, *arguments)
22
+ script = "return (%s).apply(null, arguments)" % ATOMS.fetch(function_name)
23
+ driver.execute_script(script, *arguments)
23
24
  end
24
25
 
25
26
  def extract_selector(selectors)
@@ -114,7 +114,7 @@ module Watir
114
114
 
115
115
  def html
116
116
  assert_exists
117
- browserbot('getOuterHTML', @element).strip
117
+ execute_atom(:getOuterHtml, @element).strip
118
118
  end
119
119
 
120
120
  def send_keys(*args)
@@ -133,16 +133,25 @@ module Watir
133
133
  driver.execute_script "return arguments[0].focus()", @element
134
134
  end
135
135
 
136
- def fire_event(event_name, bubble = false)
136
+ def fire_event(event_name)
137
137
  assert_exists
138
- event_name = event_name.to_s.sub(/^on/, '')
139
- browserbot('triggerEvent', @element, event_name, bubble)
138
+ event_name = event_name.to_s.sub(/^on/, '').downcase
139
+ execute_atom(:fireEvent, @element, event_name)
140
140
  end
141
141
 
142
142
  def parent
143
143
  assert_exists
144
144
 
145
- e = driver.execute_script "return arguments[0].parentNode", @element
145
+ # TODO: atom?
146
+ script = <<-JS
147
+ var element = arguments[0].parentNode;
148
+ if(element.nodeType != Node.ELEMENT_NODE)
149
+ return null;
150
+
151
+ return element;
152
+ JS
153
+
154
+ e = driver.execute_script(script, @element)
146
155
 
147
156
  if e.kind_of?(WebDriver::Element)
148
157
  Watir.element_class_for(e.tag_name.downcase).new(@parent, :element => e)
@@ -20,6 +20,14 @@ module Watir
20
20
  super
21
21
  end
22
22
 
23
+ def html
24
+ assert_exists
25
+
26
+ # this will actually give us the innerHTML instead of the outerHTML of the <frame>,
27
+ # but given the choice this seems more useful
28
+ execute_atom(:getOuterHtml, @element.find_element(:tag_name => "html")).strip
29
+ end
30
+
23
31
  def execute_script(*args)
24
32
  browser.execute_script(*args)
25
33
  end
@@ -55,6 +63,16 @@ module Watir
55
63
  def frames(*args)
56
64
  FrameCollection.new(self, extract_selector(args).merge(:tag_name => /^(iframe|frame)$/)) # hack
57
65
  end
66
+
67
+ def iframe(*args)
68
+ warn "Watir::Container#iframe is replaced by Watir::Container#frame"
69
+ frame(*args)
70
+ end
71
+
72
+ def iframes(*args)
73
+ warn "Watir::Container#iframes is replaced by Watir::Container#frames"
74
+ frame(*args)
75
+ end
58
76
  end
59
77
 
60
78
  class FrameCollection < ElementCollection
@@ -181,11 +181,13 @@ module Watir
181
181
  end
182
182
 
183
183
  def option_xpath_for(how, string)
184
+ string = XpathSupport.escape string
185
+
184
186
  case how
185
187
  when :text
186
- ".//option[normalize-space()='#{string}' or @label='#{string}']"
188
+ ".//option[normalize-space()=#{string} or @label=#{string}]"
187
189
  when :value
188
- ".//option[@value='#{string}']"
190
+ ".//option[@value=#{string}]"
189
191
  else
190
192
  raise Error, "unknown how: #{how.inspect}"
191
193
  end
@@ -297,9 +297,9 @@ module Watir
297
297
  def equal_pair(key, value)
298
298
  # we assume :label means a corresponding label element, not the attribute
299
299
  if key == :label && should_use_label_element?
300
- "@id=//label[normalize-space()=#{xpath_string(value)}]/@for"
300
+ "@id=//label[normalize-space()=#{XpathSupport.escape value}]/@for"
301
301
  else
302
- "#{lhs_for(key)}=#{xpath_string(value)}"
302
+ "#{lhs_for(key)}=#{XpathSupport.escape value}"
303
303
  end
304
304
  end
305
305
 
@@ -350,16 +350,5 @@ module Watir
350
350
  false
351
351
  end
352
352
 
353
- def xpath_string(value)
354
- if value.include? "'"
355
- parts = value.split("'", -1).map { |part| "'#{part}'" }
356
- string = parts.join(%{,"'",})
357
-
358
- "concat(#{string})"
359
- else
360
- "'#{value}'"
361
- end
362
- end
363
-
364
353
  end # ElementLocator
365
354
  end # Watir
@@ -1,3 +1,3 @@
1
1
  module Watir
2
- VERSION = "0.2.3"
2
+ VERSION = "0.2.4"
3
3
  end
@@ -23,6 +23,16 @@ module Watir
23
23
  Watir.element_class_for(e.tag_name.downcase).new(self, :element => e)
24
24
  end
25
25
  end
26
+
27
+ def self.escape(value)
28
+ if value.include? "'"
29
+ parts = value.split("'", -1).map { |part| "'#{part}'" }
30
+ string = parts.join(%{,"'",})
26
31
 
32
+ "concat(#{string})"
33
+ else
34
+ "'#{value}'"
35
+ end
36
+ end
27
37
  end # XpathSupport
28
38
  end # Watir
@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
19
19
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
20
  s.require_paths = ["lib"]
21
21
 
22
- s.add_dependency "selenium-webdriver", '>= 0.2.0'
22
+ s.add_dependency "selenium-webdriver", '>= 0.2.1'
23
23
 
24
24
  s.add_development_dependency "rspec", "~> 2.3.0"
25
25
  s.add_development_dependency "yard", "~> 0.6"
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: watir-webdriver
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.2.3
5
+ version: 0.2.4
6
6
  platform: ruby
7
7
  authors:
8
8
  - Jari Bakken
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-04-22 00:00:00 Z
13
+ date: 2011-06-01 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: selenium-webdriver
@@ -20,7 +20,7 @@ dependencies:
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 0.2.0
23
+ version: 0.2.1
24
24
  type: :runtime
25
25
  version_requirements: *id001
26
26
  - !ruby/object:Gem::Dependency
@@ -104,12 +104,13 @@ files:
104
104
  - .gitmodules
105
105
  - Gemfile
106
106
  - LICENSE
107
- - README.rdoc
107
+ - README.md
108
108
  - Rakefile
109
109
  - lib/watir-webdriver.rb
110
+ - lib/watir-webdriver/atoms/fireEvent.js
111
+ - lib/watir-webdriver/atoms/getOuterHtml.js
110
112
  - lib/watir-webdriver/attribute_helper.rb
111
113
  - lib/watir-webdriver/browser.rb
112
- - lib/watir-webdriver/browserbot.js
113
114
  - lib/watir-webdriver/cell_container.rb
114
115
  - lib/watir-webdriver/container.rb
115
116
  - lib/watir-webdriver/element_collection.rb
@@ -193,7 +194,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
193
194
  requirements: []
194
195
 
195
196
  rubyforge_project: watir-webdriver
196
- rubygems_version: 1.7.2
197
+ rubygems_version: 1.8.2
197
198
  signing_key:
198
199
  specification_version: 3
199
200
  summary: Watir on WebDriver
@@ -213,4 +214,3 @@ test_files:
213
214
  - spec/spec_helper.rb
214
215
  - spec/special_chars_spec.rb
215
216
  - spec/wait_spec.rb
216
- has_rdoc:
@@ -1,57 +0,0 @@
1
- // stolen from injectableSelenium.js in WebDriver
2
- var browserbot = {
3
- createEventObject : function(element, controlKeyDown, altKeyDown, shiftKeyDown, metaKeyDown) {
4
- var evt = element.ownerDocument.createEventObject();
5
- evt.shiftKey = shiftKeyDown;
6
- evt.metaKey = metaKeyDown;
7
- evt.altKey = altKeyDown;
8
- evt.ctrlKey = controlKeyDown;
9
- return evt;
10
- },
11
-
12
- triggerEvent: function(element, eventType, canBubble, controlKeyDown, altKeyDown, shiftKeyDown, metaKeyDown) {
13
- canBubble = (typeof(canBubble) == undefined) ? true: canBubble;
14
- if (element.fireEvent && element.ownerDocument && element.ownerDocument.createEventObject) {
15
- // IE
16
- var evt = this.createEventObject(element, controlKeyDown, altKeyDown, shiftKeyDown, metaKeyDown);
17
- element.fireEvent('on' + eventType, evt);
18
- } else {
19
- var evt = document.createEvent('HTMLEvents');
20
-
21
- try {
22
- evt.shiftKey = shiftKeyDown;
23
- evt.metaKey = metaKeyDown;
24
- evt.altKey = altKeyDown;
25
- evt.ctrlKey = controlKeyDown;
26
- } catch(e) {
27
- // Nothing sane to do
28
- }
29
-
30
- evt.initEvent(eventType, canBubble, true);
31
- return element.dispatchEvent(evt);
32
- }
33
- },
34
-
35
- getVisibleText: function() {
36
- var selection = getSelection();
37
- var range = document.createRange();
38
- range.selectNodeContents(document.documentElement);
39
- selection.addRange(range);
40
- var string = selection.toString();
41
- selection.removeAllRanges();
42
-
43
- return string;
44
- },
45
-
46
- getOuterHTML: function(element) {
47
- if (element.outerHTML) {
48
- return element.outerHTML;
49
- } else if (typeof(XMLSerializer) != undefined) {
50
- return new XMLSerializer().serializeToString(element);
51
- } else {
52
- throw "can't get outerHTML in this browser";
53
- }
54
- }
55
-
56
-
57
- };