watir-webdriver 0.0.7 → 0.0.8

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 (111) hide show
  1. data/Gemfile +2 -0
  2. data/Gemfile.lock +48 -0
  3. data/Rakefile +23 -8
  4. data/VERSION +1 -1
  5. data/lib/watir-webdriver.rb +7 -5
  6. data/lib/watir-webdriver/browser.rb +9 -2
  7. data/lib/watir-webdriver/browserbot.js +5 -2
  8. data/lib/watir-webdriver/container.rb +6 -9
  9. data/lib/watir-webdriver/{collections/element_collection.rb → element_collection.rb} +5 -0
  10. data/lib/watir-webdriver/elements/button.rb +5 -4
  11. data/lib/watir-webdriver/{element.rb → elements/element.rb} +29 -5
  12. data/lib/watir-webdriver/elements/file_field.rb +21 -4
  13. data/lib/watir-webdriver/elements/frame.rb +1 -1
  14. data/lib/watir-webdriver/elements/generated.rb +750 -750
  15. data/lib/watir-webdriver/elements/image.rb +6 -0
  16. data/lib/watir-webdriver/elements/link.rb +0 -4
  17. data/lib/watir-webdriver/elements/select.rb +22 -24
  18. data/lib/watir-webdriver/elements/table_row.rb +11 -1
  19. data/lib/watir-webdriver/elements/text_field.rb +5 -15
  20. data/lib/watir-webdriver/extensions/wait.rb +107 -0
  21. data/lib/watir-webdriver/html/generator.rb +1 -1
  22. data/lib/watir-webdriver/html/util.rb +1 -10
  23. data/lib/watir-webdriver/html/visitor.rb +2 -14
  24. data/lib/watir-webdriver/locators/button_locator.rb +22 -3
  25. data/lib/watir-webdriver/locators/element_locator.rb +54 -28
  26. data/lib/watir-webdriver/locators/table_row_locator.rb +3 -1
  27. data/lib/watir-webdriver/locators/text_field_locator.rb +7 -3
  28. data/lib/watir-webdriver/window_switching.rb +78 -0
  29. data/spec/browser_spec.rb +43 -0
  30. data/spec/container_spec.rb +43 -0
  31. data/spec/element_locator_spec.rb +305 -0
  32. data/spec/element_spec.rb +34 -5
  33. data/spec/html/closeable.html +13 -0
  34. data/spec/html/data_attributes.html +9 -0
  35. data/spec/html/wait.html +27 -0
  36. data/spec/html/window_switching.html +12 -0
  37. data/spec/input_spec.rb +14 -2
  38. data/spec/locator_spec_helper.rb +37 -0
  39. data/spec/spec_helper.rb +3 -0
  40. data/spec/wait_spec.rb +98 -0
  41. data/spec/watirspec/area_spec.rb +4 -4
  42. data/spec/watirspec/browser_spec.rb +37 -35
  43. data/spec/watirspec/button_spec.rb +22 -17
  44. data/spec/watirspec/buttons_spec.rb +1 -1
  45. data/spec/watirspec/checkbox_spec.rb +4 -0
  46. data/spec/watirspec/checkboxes_spec.rb +1 -1
  47. data/spec/watirspec/collections_spec.rb +4 -2
  48. data/spec/watirspec/dd_spec.rb +4 -0
  49. data/spec/watirspec/dds_spec.rb +1 -1
  50. data/spec/watirspec/del_spec.rb +4 -0
  51. data/spec/watirspec/dels_spec.rb +1 -1
  52. data/spec/watirspec/div_spec.rb +38 -12
  53. data/spec/watirspec/divs_spec.rb +1 -1
  54. data/spec/watirspec/dl_spec.rb +20 -6
  55. data/spec/watirspec/dls_spec.rb +1 -1
  56. data/spec/watirspec/dt_spec.rb +4 -0
  57. data/spec/watirspec/dts_spec.rb +1 -1
  58. data/spec/watirspec/em_spec.rb +4 -0
  59. data/spec/watirspec/ems_spec.rb +1 -1
  60. data/spec/watirspec/filefield_spec.rb +37 -2
  61. data/spec/watirspec/filefields_spec.rb +1 -1
  62. data/spec/watirspec/font_spec.rb +4 -0
  63. data/spec/watirspec/form_spec.rb +4 -0
  64. data/spec/watirspec/forms_spec.rb +6 -4
  65. data/spec/watirspec/frame_spec.rb +6 -0
  66. data/spec/watirspec/hidden_spec.rb +5 -4
  67. data/spec/watirspec/hiddens_spec.rb +1 -1
  68. data/spec/watirspec/hn_spec.rb +4 -0
  69. data/spec/watirspec/image_spec.rb +4 -0
  70. data/spec/watirspec/images_spec.rb +1 -1
  71. data/spec/watirspec/ins_spec.rb +4 -0
  72. data/spec/watirspec/inses_spec.rb +1 -1
  73. data/spec/watirspec/label_spec.rb +4 -0
  74. data/spec/watirspec/labels_spec.rb +2 -2
  75. data/spec/watirspec/li_spec.rb +4 -0
  76. data/spec/watirspec/link_spec.rb +15 -10
  77. data/spec/watirspec/links_spec.rb +6 -0
  78. data/spec/watirspec/lis_spec.rb +1 -1
  79. data/spec/watirspec/map_spec.rb +4 -0
  80. data/spec/watirspec/maps_spec.rb +1 -1
  81. data/spec/watirspec/meta_spec.rb +4 -0
  82. data/spec/watirspec/metas_spec.rb +1 -1
  83. data/spec/watirspec/ol_spec.rb +23 -9
  84. data/spec/watirspec/option_spec.rb +19 -7
  85. data/spec/watirspec/p_spec.rb +4 -0
  86. data/spec/watirspec/pre_spec.rb +4 -0
  87. data/spec/watirspec/pres_spec.rb +1 -1
  88. data/spec/watirspec/ps_spec.rb +1 -1
  89. data/spec/watirspec/radio_spec.rb +22 -13
  90. data/spec/watirspec/radios_spec.rb +6 -0
  91. data/spec/watirspec/select_list_spec.rb +29 -17
  92. data/spec/watirspec/select_lists_spec.rb +6 -0
  93. data/spec/watirspec/span_spec.rb +10 -2
  94. data/spec/watirspec/spans_spec.rb +1 -1
  95. data/spec/watirspec/strong_spec.rb +14 -4
  96. data/spec/watirspec/table_body_spec.rb +4 -0
  97. data/spec/watirspec/table_cell_spec.rb +9 -3
  98. data/spec/watirspec/table_cells_spec.rb +0 -1
  99. data/spec/watirspec/table_footer_spec.rb +4 -0
  100. data/spec/watirspec/table_header_spec.rb +4 -0
  101. data/spec/watirspec/table_row_spec.rb +15 -7
  102. data/spec/watirspec/table_rows_spec.rb +2 -2
  103. data/spec/watirspec/table_spec.rb +13 -7
  104. data/spec/watirspec/tables_spec.rb +1 -1
  105. data/spec/watirspec/text_field_spec.rb +21 -12
  106. data/spec/watirspec/text_fields_spec.rb +6 -0
  107. data/spec/watirspec/ul_spec.rb +4 -0
  108. data/spec/window_switching_spec.rb +116 -0
  109. data/watir-webdriver.gemspec +38 -16
  110. metadata +51 -27
  111. data/lib/watir-webdriver/collections/table_row_collection.rb +0 -11
data/spec/element_spec.rb CHANGED
@@ -1,17 +1,46 @@
1
- require File.expand_path 'watirspec/spec_helper', File.dirname(__FILE__)
1
+ require File.expand_path('watirspec/spec_helper', File.dirname(__FILE__))
2
2
 
3
3
 
4
4
  describe Watir::Element do
5
5
 
6
- before :each do
7
- browser.goto("file://" + File.expand_path("html/keylogger.html", File.dirname(__FILE__)))
8
- end
9
-
10
6
  describe "#send_keys" do
11
7
  it "sends keystrokes to the element" do
8
+ browser.goto("file://" + File.expand_path("html/keylogger.html", File.dirname(__FILE__)))
12
9
  browser.div(:id, 'receiver').send_keys("hello world")
13
10
  browser.div(:id, 'output').ps.size.should == 11
14
11
  end
15
12
  end
16
13
 
14
+ describe "#== and #eql?" do
15
+ before { browser.goto(WatirSpec.files + "/definition_lists.html") }
16
+
17
+ it "returns true if the two elements point to the same DOM element" do
18
+ a = browser.dl(:id => "experience-list")
19
+ b = browser.dl
20
+
21
+ a.should == b
22
+ a.should eql(b)
23
+ end
24
+
25
+ it "returns false if the two elements are not the same" do
26
+ a = browser.dls[0]
27
+ b = browser.dls[1]
28
+
29
+ a.should_not == b
30
+ a.should_not eql(b)
31
+ end
32
+ end
33
+
34
+ describe "data-* attributes" do
35
+ before { browser.goto("file://" + File.expand_path("html/data_attributes.html", File.dirname(__FILE__))) }
36
+
37
+ it "finds elements by a data-* attribute" do
38
+ browser.p(:data_type => "ruby-library").should exist
39
+ end
40
+
41
+ it "returns the value of a data-* attribute" do
42
+ browser.p.data_type.should == "ruby-library"
43
+ end
44
+ end
45
+
17
46
  end
@@ -0,0 +1,13 @@
1
+ <!DOCTYPE HTML>
2
+ <html>
3
+ <head>
4
+ <title>closeable window</title>
5
+ </head>
6
+
7
+ <body>
8
+ <p>
9
+ Click <a id="close" href="#" onclick="window.close()">here</a> to close this window.
10
+ </p>
11
+ </body>
12
+
13
+ </html>
@@ -0,0 +1,9 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>data-* attributes</title>
5
+ </head>
6
+ <body>
7
+ <p data-type=ruby-library>watir-webdriver</p>
8
+ </body>
9
+ </html>
@@ -0,0 +1,27 @@
1
+ <!DOCTYPE HTML>
2
+ <html>
3
+ <head>
4
+ <title>wait test</title>
5
+ <script type="text/javascript" charset="utf-8">
6
+ function setTimeoutDisplay(id, display, timeout) {
7
+ setTimeout(function() {
8
+ document.getElementById(id).style.display = display;
9
+ }, timeout);
10
+ }
11
+ function setTimeoutRemove(id, timeout) {
12
+ setTimeout(function() {
13
+ var e = document.getElementById(id);
14
+ e.parentNode.removeChild(e);
15
+ }, timeout);
16
+ }
17
+ </script>
18
+ </head>
19
+
20
+ <body>
21
+ <div id="foo" style="display:block;">foo</div>
22
+ <div id="bar" style="display:none;">bar</div>
23
+ <a id="show_bar" href="#" onclick="setTimeoutDisplay('bar', 'block', 500);">show bar</a>
24
+ <a id="hide_foo" href="#" onclick="setTimeoutDisplay('foo', 'none', 500);">hide foo</a>
25
+ <a id="remove_foo" href="#" onclick="setTimeoutRemove('foo', 500);">remove foo</a>
26
+ </body>
27
+ </html>
@@ -0,0 +1,12 @@
1
+ <!DOCTYPE HTML>
2
+ <html>
3
+ <head>
4
+ <title>window switching</title>
5
+ </head>
6
+
7
+ <body>
8
+ <p>
9
+ Click <a id="open" href="#" onclick='window.open("closeable.html", "closeable-window")'>here</a> to open a new window.
10
+ </p>
11
+ </body>
12
+ </html>
data/spec/input_spec.rb CHANGED
@@ -1,4 +1,4 @@
1
- require File.expand_path 'watirspec/spec_helper', File.dirname(__FILE__)
1
+ require File.expand_path('watirspec/spec_helper', File.dirname(__FILE__))
2
2
 
3
3
  describe Watir::Input do
4
4
 
@@ -27,7 +27,7 @@ describe Watir::Input do
27
27
 
28
28
  it "raises an error if the element is not a radio button" do
29
29
  lambda {
30
- browser.input(:xpath => "//input[@type='text']").to_checkbox
30
+ browser.input(:xpath => "//input[@type='text']").to_radio
31
31
  }.should raise_error(TypeError)
32
32
  end
33
33
  end
@@ -62,4 +62,16 @@ describe Watir::Input do
62
62
  end
63
63
  end
64
64
 
65
+ describe "#to_file_field" do
66
+ it "returns a TextField instance" do
67
+ e = browser.input(:xpath => "//input[@type='file']").to_file_field
68
+ e.should be_kind_of(Watir::FileField)
69
+ end
70
+
71
+ it "raises an error if the element is not a text field" do
72
+ lambda {
73
+ browser.input(:xpath => "//input[@type='radio']").to_file_field
74
+ }.should raise_error(TypeError)
75
+ end
76
+ end
65
77
  end
@@ -0,0 +1,37 @@
1
+ module LocatorSpecHelper
2
+ def driver
3
+ @driver ||= mock(Selenium::WebDriver::Driver)
4
+ end
5
+
6
+ def locator(selector, attrs = Watir::HTMLElement.attributes)
7
+ Watir::ElementLocator.new(driver, selector, attrs)
8
+ end
9
+
10
+ def expect_one(*args)
11
+ driver.should_receive(:find_element).with(*args)
12
+ end
13
+
14
+ def expect_all(*args)
15
+ driver.should_receive(:find_elements).with(*args)
16
+ end
17
+
18
+ def locate_one(*args)
19
+ locator(*args).locate
20
+ end
21
+
22
+ def locate_all(*args)
23
+ locator(*args).locate_all
24
+ end
25
+
26
+ def element(opts = {})
27
+ attrs = opts.delete(:attributes)
28
+ el = mock(Watir::Element, opts)
29
+
30
+ attrs.each do |key, value|
31
+ el.stub!(:attribute).with(key).and_return(value)
32
+ end if attrs
33
+
34
+ el
35
+ end
36
+ end
37
+
data/spec/spec_helper.rb CHANGED
@@ -4,12 +4,14 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
4
4
 
5
5
  require 'rubygems'
6
6
  require 'watir-webdriver'
7
+ require 'locator_spec_helper'
7
8
  require 'spec'
8
9
  require 'spec/autorun'
9
10
 
10
11
  include Watir
11
12
  include Watir::Exception
12
13
 
14
+ WEBDRIVER_SELECTORS = [:class, :class_name, :css, :id, :name, :tag_name, :xpath]
13
15
 
14
16
  if defined?(WatirSpec)
15
17
  browser = (ENV['WATIR_WEBDRIVER_BROWSER'] || :firefox).to_sym
@@ -24,3 +26,4 @@ if defined?(WatirSpec)
24
26
  }
25
27
  end
26
28
  end
29
+
data/spec/wait_spec.rb ADDED
@@ -0,0 +1,98 @@
1
+ require File.expand_path("watirspec/spec_helper", File.dirname(__FILE__))
2
+ require "watir-webdriver/extensions/wait"
3
+
4
+ describe Watir::Wait do
5
+ describe "#until" do
6
+ it "waits until the block returns true" do
7
+ Wait::until(1) { true }.should be_true
8
+ end
9
+
10
+ it "times out" do
11
+ lambda do
12
+ Wait::until(1) { false }
13
+ end.should raise_error(Watir::Wait::TimeoutError)
14
+ end
15
+ end
16
+
17
+ describe "#while" do
18
+ it "waits while the block returns true" do
19
+ Wait::while(1) { false }.should == nil
20
+ end
21
+
22
+ it "times out" do
23
+ lambda do
24
+ Wait::while(1) { true }
25
+ end.should raise_error(Watir::Wait::TimeoutError)
26
+ end
27
+ end
28
+ end
29
+
30
+ describe Watir::Element do
31
+
32
+ before do
33
+ browser.goto("file://" + File.expand_path("html/wait.html", File.dirname(__FILE__)))
34
+ end
35
+
36
+ describe "#present?" do
37
+ it "returns true if the element exists and is visible" do
38
+ browser.div(:id, 'foo').should be_present
39
+ end
40
+
41
+ it "returns false if the element exists but is not visible" do
42
+ browser.div(:id, 'bar').should_not be_present
43
+ end
44
+
45
+ it "returns false if the element does not exist" do
46
+ browser.div(:id, 'should-not-exist').should_not be_present
47
+ end
48
+ end
49
+
50
+ describe "#when_present" do
51
+ it "invokes subsequent methods after waiting for the element's presence" do
52
+ browser.a(:id, 'show_bar').click
53
+ called = false
54
+ browser.div(:id, 'bar').when_present(1) do
55
+ called = true
56
+ end
57
+ called.should == true
58
+ end
59
+
60
+ it "times out" do
61
+ lambda do
62
+ browser.div(:id, 'bar').when_present(1) {}
63
+ end.should raise_error(Watir::Wait::TimeoutError)
64
+ end
65
+ end
66
+
67
+ describe "#wait_until_present" do
68
+ it "invokes subsequent methods after waiting until the element's appereance" do
69
+ browser.a(:id, 'show_bar').click
70
+ browser.div(:id, 'bar').wait_until_present(1)
71
+ end
72
+
73
+ it "times out" do
74
+ lambda do
75
+ browser.div(:id, 'bar').wait_until_present(1)
76
+ end.should raise_error(Watir::Wait::TimeoutError)
77
+ end
78
+ end
79
+
80
+ describe "#wait_while_present" do
81
+ it "invokes subsequent methods after waiting until the element's disappearance" do
82
+ browser.a(:id, 'hide_foo').click
83
+ browser.div(:id, 'foo').wait_while_present(1)
84
+ end
85
+
86
+ it "invokes subsequent methods after waiting until the element's removal" do
87
+ browser.a(:id, 'remove_foo').click
88
+ browser.div(:id, 'foo').wait_while_present(1)
89
+ end
90
+
91
+ it "times out" do
92
+ lambda do
93
+ browser.div(:id, 'foo').wait_while_present(1)
94
+ end.should raise_error(Watir::Wait::TimeoutError)
95
+ end
96
+ end
97
+
98
+ end
@@ -15,8 +15,6 @@ describe "Area" do
15
15
  browser.area(:title, "Tables").should exist
16
16
  browser.area(:title, /Tables/).should exist
17
17
 
18
- browser.area(:url, "tables.html").should exist
19
- browser.area(:url, /tables/).should exist
20
18
  browser.area(:href, "tables.html").should exist
21
19
  browser.area(:href, /tables/).should exist
22
20
 
@@ -24,14 +22,16 @@ describe "Area" do
24
22
  browser.area(:xpath, "//area[@id='NCE']").should exist
25
23
  end
26
24
 
25
+ it "returns the first area if given no args" do
26
+ browser.area.should exist
27
+ end
28
+
27
29
  it "returns false if the area doesn't exist" do
28
30
  browser.area(:id, "no_such_id").should_not exist
29
31
  browser.area(:id, /no_such_id/).should_not exist
30
32
  browser.area(:title, "no_such_title").should_not exist
31
33
  browser.area(:title, /no_such_title/).should_not exist
32
34
 
33
- browser.area(:url, "no_such_href").should_not exist
34
- browser.area(:url, /no_such_href/).should_not exist
35
35
  browser.area(:href, "no-tables.html").should_not exist
36
36
  browser.area(:href, /no-tables/).should_not exist
37
37
 
@@ -9,10 +9,12 @@ describe "Browser" do
9
9
  browser.should exist
10
10
  end
11
11
 
12
- it "returns false after Browser#close" do
13
- b = WatirSpec.new_browser
14
- b.close
15
- b.should_not exist
12
+ bug "http://github.com/jarib/watir-webdriver/issues/issue/29", [:webdriver, :ie] do
13
+ it "returns false after Browser#close" do
14
+ b = WatirSpec.new_browser
15
+ b.close
16
+ b.should_not exist
17
+ end
16
18
  end
17
19
  end
18
20
 
@@ -79,7 +81,7 @@ describe "Browser" do
79
81
  end
80
82
  end
81
83
 
82
- not_compliant_on [:webdriver, :ie] do # hang?
84
+ bug "http://github.com/jarib/watirspec/issues/issue/8" [:webdriver, :ie], [:webdriver, :chrome] do
83
85
  describe ".start" do
84
86
  it "goes to the given URL and return an instance of itself" do
85
87
  browser = WatirSpec.implementation.browser_class.start("#{WatirSpec.files}/non_control_elements.html")
@@ -158,9 +160,9 @@ describe "Browser" do
158
160
  "#{WatirSpec.host}/forms_with_input_elements.html",
159
161
  "#{WatirSpec.host}/definition_lists.html"
160
162
  ].map do |page|
161
- browser.goto page
162
- browser.url
163
- end
163
+ browser.goto page
164
+ browser.url
165
+ end
164
166
 
165
167
  3.times { browser.back }
166
168
  browser.url.should == urls.first
@@ -170,33 +172,33 @@ describe "Browser" do
170
172
  end
171
173
 
172
174
  describe "#element_by_xpath" do
173
- before :each do
174
- browser.goto(WatirSpec.files + "/forms_with_input_elements.html")
175
- end
176
-
177
- it "finds submit buttons matching the given xpath" do
178
- browser.element_by_xpath("//input[@type='submit']").should exist
179
- end
180
-
181
- it "finds reset buttons matching the given xpath" do
182
- browser.element_by_xpath("//input[@type='reset']").should exist
183
- end
184
-
185
- it "finds image buttons matching the given xpath" do
186
- browser.element_by_xpath("//input[@type='image']").should exist
187
- end
188
-
189
- it "finds the element matching the given xpath" do
190
- browser.element_by_xpath("//input[@type='password']").should exist
191
- end
192
-
193
- it "will not find elements that doesn't exist" do
194
- e = browser.element_by_xpath("//input[@type='foobar']")
195
- e.should_not exist
196
- lambda { e.text }.should raise_error(UnknownObjectException)
197
- end
198
- end
199
-
175
+ before :each do
176
+ browser.goto(WatirSpec.files + "/forms_with_input_elements.html")
177
+ end
178
+
179
+ it "finds submit buttons matching the given xpath" do
180
+ browser.element_by_xpath("//input[@type='submit']").should exist
181
+ end
182
+
183
+ it "finds reset buttons matching the given xpath" do
184
+ browser.element_by_xpath("//input[@type='reset']").should exist
185
+ end
186
+
187
+ it "finds image buttons matching the given xpath" do
188
+ browser.element_by_xpath("//input[@type='image']").should exist
189
+ end
190
+
191
+ it "finds the element matching the given xpath" do
192
+ browser.element_by_xpath("//input[@type='password']").should exist
193
+ end
194
+
195
+ it "will not find elements that doesn't exist" do
196
+ e = browser.element_by_xpath("//input[@type='foobar']")
197
+ e.should_not exist
198
+ lambda { e.text }.should raise_error(UnknownObjectException)
199
+ end
200
+ end
201
+
200
202
  describe "#elements_by_xpath" do
201
203
  before :each do
202
204
  browser.goto(WatirSpec.files + "/forms_with_input_elements.html")
@@ -33,6 +33,11 @@ describe "Button" do
33
33
  browser.button(:caption, /Button 2/).should exist
34
34
  end
35
35
 
36
+
37
+ it "returns the first button if given no args" do
38
+ browser.button.should exist
39
+ end
40
+
36
41
  it "returns false if the button doesn't exist" do
37
42
  browser.button(:id, "no_such_id").should_not exist
38
43
  browser.button(:id, /no_such_id/).should_not exist
@@ -50,11 +55,9 @@ describe "Button" do
50
55
  browser.button(:xpath, "//input[@id='no_such_id']").should_not exist
51
56
  end
52
57
 
53
- bug "http://github.com/jarib/watir-webdriver/issues#issue/6", :webdriver do
54
- it "checks the tag name and type attribute when locating by xpath" do
55
- browser.button(:xpath, "//input[@type='text']").should_not exist
56
- browser.button(:xpath, "//input[@type='button']").should exist
57
- end
58
+ it "checks the tag name and type attribute when locating by xpath" do
59
+ browser.button(:xpath, "//input[@type='text']").should_not exist
60
+ browser.button(:xpath, "//input[@type='button']").should exist
58
61
  end
59
62
 
60
63
  it "raises TypeError when 'what' argument is invalid" do
@@ -64,11 +67,6 @@ describe "Button" do
64
67
  it "raises MissingWayOfFindingObjectException when 'how' argument is invalid" do
65
68
  lambda { browser.button(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
66
69
  end
67
-
68
- # it "locates the correct button when there are duplicate ids and user disambiguates by parent" do
69
- # browser.goto(WatirSpec.files + "/buttons_with_duplicate_ids.html")
70
- # browser.form(:name, "bar-form").button(:id, 'next').parent.name.should == "bar-form"
71
- # end
72
70
  end
73
71
 
74
72
  # Attribute methods
@@ -107,18 +105,12 @@ describe "Button" do
107
105
  end
108
106
 
109
107
  describe "#src" do
110
- not_compliant_on [:webdriver, :ie], [:webdriver, :firefox] do
108
+ bug "http://github.com/jarib/watir-webdriver/issues/issue/27", [:webdriver, :ie], [:webdriver, :firefox] do
111
109
  it "returns the src attribute for the button image" do
112
110
  browser.button(:name, "new_user_image").src.should == "images/button.jpg"
113
111
  end
114
112
  end
115
113
 
116
- deviates_on [:webdriver, :ie], [:webdriver, :firefox] do
117
- it "returns the src attribute for the button image" do
118
- browser.button(:name, "new_user_image").src.should == "file:///#{File.expand_path(File.dirname(__FILE__))}/html/images/button.jpg"
119
- end
120
- end
121
-
122
114
  it "raises UnknownObjectException if the button does not exist" do
123
115
  lambda { browser.button(:name, "no_such_name").src }.should raise_error(UnknownObjectException)
124
116
  end
@@ -180,6 +172,19 @@ describe "Button" do
180
172
  end
181
173
  end
182
174
 
175
+ describe "#text" do
176
+ it "returns the text of the button" do
177
+ browser.button(:index, 0).text.should == 'Submit'
178
+ browser.button(:index, 1).text.should == 'Reset'
179
+ browser.button(:index, 2).text.should == 'Button'
180
+ browser.button(:index, 3).text.should == "Button 2"
181
+ end
182
+
183
+ it "raises UnknownObjectException if the element does not exist" do
184
+ lambda { browser.button(:id, "no_such_id").text }.should raise_error(UnknownObjectException)
185
+ end
186
+ end
187
+
183
188
  describe "#respond_to?" do
184
189
  it "returns true for all attribute methods" do
185
190
  browser.button(:index, 0).should respond_to(:class_name)