watir-classic 3.2.0 → 3.3.0

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/CHANGES CHANGED
@@ -1,3 +1,12 @@
1
+ == 3.3.0 - 2012/10/27
2
+
3
+ * Add support for optional Element#style property argument, which allows to get specific css style attribute value.
4
+ * Add support for locating Link by a :name. Fixes #42.
5
+ * Avoid endless loop when focusing elements inside of a frame. Closes #41.
6
+ * Cookies#delete handles the situation if browser is on about:blank.
7
+ * Remove Image#file_created_date method since IE does not provide accurate information. Closes #36.
8
+ * Use MultiJSON gem instead of the Yajl::Ruby gem as a dependency for parsing #execute_script results.
9
+
1
10
  == 3.2.0 - 2012/09/17
2
11
 
3
12
  * Add Element#browser method as an alias for Element#page_container.
data/Gemfile.lock CHANGED
@@ -1,78 +1,78 @@
1
- PATH
2
- remote: .
3
- specs:
4
- watir-classic (3.2.0.rc1)
5
- ffi (~> 1.0)
6
- nokogiri
7
- rautomation (~> 0.7.2)
8
- user-choices
9
- win32-process (>= 0.5.5)
10
- win32screenshot
11
- windows-pr (>= 0.6.6)
12
- yajl-ruby
13
-
14
- GEM
15
- remote: http://rubygems.org/
16
- specs:
17
- builder (3.0.0)
18
- childprocess (0.3.4)
19
- ffi (~> 1.0, >= 1.0.6)
20
- diff-lcs (1.1.3)
21
- ffi (1.1.3-x86-mingw32)
22
- hoe (3.0.8)
23
- rake (~> 0.8)
24
- mini_magick (3.2.1)
25
- subexec (~> 0.0.4)
26
- nokogiri (1.5.5-x86-mingw32)
27
- rack (1.4.1)
28
- rack-protection (1.2.0)
29
- rack
30
- rake (0.9.2.2)
31
- rautomation (0.7.2)
32
- rspec (2.11.0)
33
- rspec-core (~> 2.11.0)
34
- rspec-expectations (~> 2.11.0)
35
- rspec-mocks (~> 2.11.0)
36
- rspec-core (2.11.1)
37
- rspec-expectations (2.11.2)
38
- diff-lcs (~> 1.1.3)
39
- rspec-mocks (2.11.1)
40
- s4t-utils (1.0.4)
41
- hoe (>= 1.3.0)
42
- sinatra (1.3.2)
43
- rack (~> 1.3, >= 1.3.6)
44
- rack-protection (~> 1.2)
45
- tilt (~> 1.3, >= 1.3.3)
46
- subexec (0.0.4)
47
- syntax (1.0.0)
48
- tilt (1.3.3)
49
- user-choices (1.1.6.1)
50
- builder (>= 2.1.2)
51
- s4t-utils (>= 1.0.3)
52
- xml-simple (>= 1.0.11)
53
- win32-api (1.4.8-x86-mingw32)
54
- win32-process (0.7.0)
55
- ffi (>= 1.0.0)
56
- win32screenshot (1.0.7)
57
- ffi (~> 1.0)
58
- mini_magick (~> 3.2.1)
59
- rautomation (~> 0.7.0)
60
- windows-api (0.4.2)
61
- win32-api (>= 1.4.5)
62
- windows-pr (1.2.2)
63
- win32-api (>= 1.4.5)
64
- windows-api (>= 0.3.0)
65
- xml-simple (1.1.1)
66
- yajl-ruby (1.1.0-x86-mingw32)
67
- yard (0.8.2.1)
68
-
69
- PLATFORMS
70
- x86-mingw32
71
-
72
- DEPENDENCIES
73
- childprocess
74
- rspec (~> 2.3)
75
- sinatra
76
- syntax
77
- watir-classic!
78
- yard
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ watir-classic (3.2.0)
5
+ ffi (~> 1.0)
6
+ multi_json
7
+ nokogiri
8
+ rautomation (~> 0.7.2)
9
+ user-choices
10
+ win32-process (>= 0.5.5)
11
+ win32screenshot
12
+ windows-pr (>= 0.6.6)
13
+
14
+ GEM
15
+ remote: http://rubygems.org/
16
+ specs:
17
+ builder (3.1.3)
18
+ childprocess (0.3.4)
19
+ ffi (~> 1.0, >= 1.0.6)
20
+ diff-lcs (1.1.3)
21
+ ffi (1.1.3-x86-mingw32)
22
+ hoe (3.0.8)
23
+ rake (~> 0.8)
24
+ mini_magick (3.2.1)
25
+ subexec (~> 0.0.4)
26
+ multi_json (1.3.6)
27
+ nokogiri (1.5.5-x86-mingw32)
28
+ rack (1.4.1)
29
+ rack-protection (1.2.0)
30
+ rack
31
+ rake (0.9.2.2)
32
+ rautomation (0.7.2)
33
+ rspec (2.11.0)
34
+ rspec-core (~> 2.11.0)
35
+ rspec-expectations (~> 2.11.0)
36
+ rspec-mocks (~> 2.11.0)
37
+ rspec-core (2.11.1)
38
+ rspec-expectations (2.11.2)
39
+ diff-lcs (~> 1.1.3)
40
+ rspec-mocks (2.11.1)
41
+ s4t-utils (1.0.4)
42
+ hoe (>= 1.3.0)
43
+ sinatra (1.3.2)
44
+ rack (~> 1.3, >= 1.3.6)
45
+ rack-protection (~> 1.2)
46
+ tilt (~> 1.3, >= 1.3.3)
47
+ subexec (0.0.4)
48
+ syntax (1.0.0)
49
+ tilt (1.3.3)
50
+ user-choices (1.1.6.1)
51
+ builder (>= 2.1.2)
52
+ s4t-utils (>= 1.0.3)
53
+ xml-simple (>= 1.0.11)
54
+ win32-api (1.4.8-x86-mingw32)
55
+ win32-process (0.7.0)
56
+ ffi (>= 1.0.0)
57
+ win32screenshot (1.0.7)
58
+ ffi (~> 1.0)
59
+ mini_magick (~> 3.2.1)
60
+ rautomation (~> 0.7.0)
61
+ windows-api (0.4.2)
62
+ win32-api (>= 1.4.5)
63
+ windows-pr (1.2.2)
64
+ win32-api (>= 1.4.5)
65
+ windows-api (>= 0.3.0)
66
+ xml-simple (1.1.1)
67
+ yard (0.8.2.1)
68
+
69
+ PLATFORMS
70
+ x86-mingw32
71
+
72
+ DEPENDENCIES
73
+ childprocess
74
+ rspec (~> 2.3)
75
+ sinatra
76
+ syntax
77
+ watir-classic!
78
+ yard
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.2.0
1
+ 3.3.0
@@ -39,6 +39,7 @@ module Watir
39
39
  # there's got to be some easier way to do this
40
40
  uri = URI.parse(@page_container.url)
41
41
  domain = uri.host
42
+ return unless domain
42
43
 
43
44
  paths = uri.path.split("/").reduce([]) do |paths, path|
44
45
  paths << "#{paths.last}/#{path}".squeeze("/")
@@ -71,10 +72,11 @@ module Watir
71
72
  each {|cookie| delete cookie[:name]}
72
73
  end
73
74
 
75
+ private
76
+
74
77
  def delete_with_options name, options={}
75
78
  add name, nil, options
76
79
  end
77
80
 
78
- private :delete_with_options
79
81
  end
80
82
  end
@@ -113,9 +113,16 @@ module Watir
113
113
  end
114
114
 
115
115
  # return the css style as a string
116
- def style
116
+ def style(property=nil)
117
117
  assert_exists
118
- ole_object.style.cssText
118
+ css = ole_object.style.cssText
119
+
120
+ if property
121
+ properties = Hash[css.downcase.split(";").map { |p| p.split(":").map(&:strip) }]
122
+ properties[property]
123
+ else
124
+ css
125
+ end
119
126
  end
120
127
 
121
128
  # Return the innerText of the object or an empty string if the object is
@@ -343,7 +350,7 @@ module Watir
343
350
  def focus
344
351
  assert_exists
345
352
  assert_enabled
346
- @page_container.focus
353
+ @container.focus
347
354
  ole_object.focus(0)
348
355
  end
349
356
 
@@ -3,7 +3,7 @@ require 'watir-classic/core'
3
3
  require 'watir-classic/close_all'
4
4
  require 'watir-classic/ie-process'
5
5
  require 'watir-classic/screenshot'
6
- require 'yajl'
6
+ require 'multi_json'
7
7
 
8
8
  # these switches need to be deleted from ARGV to enable the Test::Unit
9
9
  # functionality that grabs
@@ -8,7 +8,6 @@ module Watir
8
8
  class Image < Element
9
9
  attr_ole :alt
10
10
  attr_ole :src
11
- attr_ole :file_created_date, :fileCreatedDate
12
11
 
13
12
  # this method produces the properties for an image as an array
14
13
  def image_string_creator
@@ -55,7 +54,7 @@ module Watir
55
54
  # If the Disk cache is full (tools menu -> Internet options -> Temporary Internet Files), it may produce incorrect responses.
56
55
  def loaded?
57
56
  assert_exists
58
- !file_created_date.empty? && file_size != -1
57
+ file_size != -1
59
58
  end
60
59
 
61
60
  # this method highlights the image (in fact it adds or removes a border around the image)
@@ -7,12 +7,12 @@ module Watir
7
7
  class Link < Element
8
8
  attr_ole :type
9
9
  attr_ole :href
10
+ attr_ole :name
10
11
 
11
12
  # if an image is used as part of the link, this will return true
12
13
  def link_has_image
13
14
  assert_exists
14
- return true if @o.getElementsByTagName("IMG").length > 0
15
- return false
15
+ @o.getElementsByTagName("IMG").length > 0
16
16
  end
17
17
 
18
18
  # this method returns the src of an image, if an image is used as part of the link
@@ -47,7 +47,7 @@ module Watir
47
47
  result = document.getElementById(wrapper).innerHTML
48
48
  end
49
49
 
50
- Yajl::Parser.parse(result) rescue nil
50
+ MultiJson.load(result)["value"] rescue nil
51
51
  end
52
52
 
53
53
  # The HTML of the current page
@@ -99,7 +99,7 @@ module Watir
99
99
  document.getElementsByTagName('head')[0].appendChild(json2)
100
100
  }
101
101
 
102
- return JSON.stringify((function() {#{source}})());
102
+ return JSON.stringify({value: (function() {#{source}})()});
103
103
  })()
104
104
  ]
105
105
  end
@@ -0,0 +1,19 @@
1
+ # encoding: utf-8
2
+ require File.expand_path("watirspec/spec_helper", File.dirname(__FILE__))
3
+
4
+ describe "Element" do
5
+
6
+ before :each do
7
+ browser.goto(WatirSpec.url_for("non_control_elements.html"))
8
+ end
9
+
10
+ describe "#style" do
11
+ it "returns the style attribute if the property exists" do
12
+ el = browser.div(:id, 'best_language')
13
+ el.style("color").should == "red"
14
+ el.style("text-decoration").should == "underline"
15
+ el.style("cursor").should == "pointer"
16
+ end
17
+ end
18
+
19
+ end
data/spec/link_spec.rb ADDED
@@ -0,0 +1,14 @@
1
+ # encoding: utf-8
2
+ require File.expand_path("watirspec/spec_helper", File.dirname(__FILE__))
3
+
4
+ describe "Link" do
5
+ before do
6
+ browser.goto(WatirSpec.url_for("non_control_elements.html"))
7
+ end
8
+
9
+ context "#exists?" do
10
+ it "finds link by a name" do
11
+ browser.a(:name => "bad_attribute").should exist
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,18 @@
1
+ # encoding: utf-8
2
+ require File.expand_path("watirspec/spec_helper", File.dirname(__FILE__))
3
+
4
+ describe "SelectList" do
5
+ before do
6
+ browser.goto(WatirSpec.url_for("frames.html"))
7
+ end
8
+
9
+ context "#select" do
10
+ it "selects option within frame" do
11
+ list = browser.frame.select_list
12
+ list.should exist
13
+ list.should be_selected("value1")
14
+ list.select "value2"
15
+ list.should be_selected("value2")
16
+ end
17
+ end
18
+ end
@@ -29,7 +29,7 @@ Gem::Specification.new do |s|
29
29
  s.add_dependency 'ffi', '~>1.0'
30
30
  s.add_dependency 'rautomation', '~>0.7.2'
31
31
  s.add_dependency 'user-choices'
32
- s.add_dependency 'yajl-ruby'
32
+ s.add_dependency 'multi_json'
33
33
  s.add_dependency 'win32screenshot'
34
34
 
35
35
  s.add_development_dependency("rspec", "~>2.3")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: watir-classic
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.0
4
+ version: 3.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-19 00:00:00.000000000 Z
12
+ date: 2012-10-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: win32-process
@@ -108,7 +108,7 @@ dependencies:
108
108
  - !ruby/object:Gem::Version
109
109
  version: '0'
110
110
  - !ruby/object:Gem::Dependency
111
- name: yajl-ruby
111
+ name: multi_json
112
112
  requirement: !ruby/object:Gem::Requirement
113
113
  none: false
114
114
  requirements:
@@ -303,7 +303,10 @@ files:
303
303
  - lib/watir-classic/window.rb
304
304
  - lib/watir-classic/xpath_locator.rb
305
305
  - spec/browser_spec.rb
306
+ - spec/element_spec.rb
306
307
  - spec/implementation.rb
308
+ - spec/link_spec.rb
309
+ - spec/select_list_spec.rb
307
310
  - watir-classic.gemspec
308
311
  - watir.gif
309
312
  homepage: http://watir.com/
@@ -333,5 +336,8 @@ specification_version: 3
333
336
  summary: Automated testing tool for web applications.
334
337
  test_files:
335
338
  - spec/browser_spec.rb
339
+ - spec/element_spec.rb
336
340
  - spec/implementation.rb
341
+ - spec/link_spec.rb
342
+ - spec/select_list_spec.rb
337
343
  has_rdoc: