watir-webdriver 0.0.1.dev6 → 0.0.1.dev7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. data/Rakefile +1 -2
  2. data/VERSION +1 -1
  3. data/lib/watir-webdriver.rb +1 -4
  4. data/lib/watir-webdriver/base_element.rb +14 -7
  5. data/lib/watir-webdriver/browser.rb +3 -1
  6. data/lib/watir-webdriver/elements/button.rb +1 -0
  7. data/lib/watir-webdriver/elements/form.rb +1 -1
  8. data/lib/watir-webdriver/elements/frame.rb +77 -0
  9. data/lib/watir-webdriver/elements/generated.rb +536 -536
  10. data/lib/watir-webdriver/elements/option.rb +3 -0
  11. data/lib/watir-webdriver/elements/table_row.rb +1 -0
  12. data/lib/watir-webdriver/elements/text_field.rb +5 -1
  13. data/lib/watir-webdriver/xpath_support.rb +0 -1
  14. data/spec/base_element_spec.rb +16 -0
  15. data/spec/html/keylogger.html +15 -0
  16. data/spec/watirspec/area_spec.rb +78 -0
  17. data/spec/watirspec/areas_spec.rb +31 -0
  18. data/spec/watirspec/browser_spec.rb +274 -0
  19. data/spec/watirspec/button_spec.rb +242 -0
  20. data/spec/watirspec/buttons_spec.rb +48 -0
  21. data/spec/watirspec/checkbox_spec.rb +272 -0
  22. data/spec/watirspec/checkboxes_spec.rb +32 -0
  23. data/spec/watirspec/dd_spec.rb +123 -0
  24. data/spec/watirspec/dds_spec.rb +31 -0
  25. data/spec/watirspec/div_spec.rb +211 -0
  26. data/spec/watirspec/divs_spec.rb +31 -0
  27. data/spec/watirspec/dl_spec.rb +123 -0
  28. data/spec/watirspec/dls_spec.rb +32 -0
  29. data/spec/watirspec/dt_spec.rb +123 -0
  30. data/spec/watirspec/dts_spec.rb +31 -0
  31. data/spec/watirspec/element_spec.rb +89 -0
  32. data/spec/watirspec/em_spec.rb +97 -0
  33. data/spec/watirspec/ems_spec.rb +32 -0
  34. data/spec/watirspec/filefield_spec.rb +119 -0
  35. data/spec/watirspec/filefields_spec.rb +32 -0
  36. data/spec/watirspec/font_spec.rb +26 -0
  37. data/spec/watirspec/form_spec.rb +63 -0
  38. data/spec/watirspec/forms_spec.rb +33 -0
  39. data/spec/watirspec/frame_spec.rb +135 -0
  40. data/spec/watirspec/frames_spec.rb +62 -0
  41. data/spec/watirspec/hidden_spec.rb +102 -0
  42. data/spec/watirspec/hiddens_spec.rb +32 -0
  43. data/spec/watirspec/hn_spec.rb +93 -0
  44. data/spec/watirspec/hns_spec.rb +38 -0
  45. data/spec/watirspec/image_spec.rb +207 -0
  46. data/spec/watirspec/images_spec.rb +31 -0
  47. data/spec/watirspec/label_spec.rb +75 -0
  48. data/spec/watirspec/labels_spec.rb +31 -0
  49. data/spec/watirspec/li_spec.rb +112 -0
  50. data/spec/watirspec/lib/guards.rb +59 -0
  51. data/spec/watirspec/lib/server.rb +136 -0
  52. data/spec/watirspec/lib/spec_helper.rb +79 -0
  53. data/spec/watirspec/lib/watirspec.rb +72 -0
  54. data/spec/watirspec/link_spec.rb +168 -0
  55. data/spec/watirspec/links_spec.rb +35 -0
  56. data/spec/watirspec/lis_spec.rb +31 -0
  57. data/spec/watirspec/map_spec.rb +76 -0
  58. data/spec/watirspec/maps_spec.rb +32 -0
  59. data/spec/watirspec/meta_spec.rb +22 -0
  60. data/spec/watirspec/metas_spec.rb +30 -0
  61. data/spec/watirspec/ol_spec.rb +78 -0
  62. data/spec/watirspec/ols_spec.rb +31 -0
  63. data/spec/watirspec/option_spec.rb +173 -0
  64. data/spec/watirspec/p_spec.rb +128 -0
  65. data/spec/watirspec/pre_spec.rb +112 -0
  66. data/spec/watirspec/pres_spec.rb +31 -0
  67. data/spec/watirspec/ps_spec.rb +31 -0
  68. data/spec/watirspec/radio_spec.rb +255 -0
  69. data/spec/watirspec/radios_spec.rb +32 -0
  70. data/spec/watirspec/select_list_spec.rb +318 -0
  71. data/spec/watirspec/select_lists_spec.rb +35 -0
  72. data/spec/watirspec/span_spec.rb +142 -0
  73. data/spec/watirspec/spans_spec.rb +31 -0
  74. data/spec/watirspec/spec_helper.rb +17 -0
  75. data/spec/watirspec/strong_spec.rb +89 -0
  76. data/spec/watirspec/strongs_spec.rb +32 -0
  77. data/spec/watirspec/table_bodies_spec.rb +45 -0
  78. data/spec/watirspec/table_body_spec.rb +98 -0
  79. data/spec/watirspec/table_cell_spec.rb +68 -0
  80. data/spec/watirspec/table_cells_spec.rb +47 -0
  81. data/spec/watirspec/table_footer_spec.rb +85 -0
  82. data/spec/watirspec/table_footers_spec.rb +47 -0
  83. data/spec/watirspec/table_header_spec.rb +85 -0
  84. data/spec/watirspec/table_headers_spec.rb +45 -0
  85. data/spec/watirspec/table_row_spec.rb +87 -0
  86. data/spec/watirspec/table_rows_spec.rb +50 -0
  87. data/spec/watirspec/table_spec.rb +160 -0
  88. data/spec/watirspec/tables_spec.rb +33 -0
  89. data/spec/watirspec/text_field_spec.rb +276 -0
  90. data/spec/watirspec/text_fields_spec.rb +35 -0
  91. data/spec/watirspec/ul_spec.rb +76 -0
  92. data/spec/watirspec/uls_spec.rb +33 -0
  93. data/support/html5/html5.idl +1 -1
  94. metadata +181 -21
@@ -0,0 +1,32 @@
1
+ # encoding: utf-8
2
+ require File.dirname(__FILE__) + '/spec_helper'
3
+
4
+ describe "FileFields" do
5
+
6
+ before :each do
7
+ browser.goto(WatirSpec.files + "/forms_with_input_elements.html")
8
+ end
9
+
10
+ describe "#length" do
11
+ it "returns the correct number of file fields" do
12
+ browser.file_fields.length.should == 2
13
+ end
14
+ end
15
+
16
+ describe "#[]" do
17
+ it "returns the file field at the given index" do
18
+ browser.file_fields[0].id.should == "new_user_portrait"
19
+ end
20
+ end
21
+
22
+ describe "#each" do
23
+ it "iterates through file fields correctly" do
24
+ browser.file_fields.each_with_index do |f, index|
25
+ f.name.should == browser.file_field(:index, index).name
26
+ f.id.should == browser.file_field(:index, index).id
27
+ f.value.should == browser.file_field(:index, index).value
28
+ end
29
+ end
30
+ end
31
+
32
+ end
@@ -0,0 +1,26 @@
1
+ # encoding: utf-8
2
+ require File.dirname(__FILE__) + '/spec_helper'
3
+
4
+ describe "Font" do
5
+
6
+ before :each do
7
+ browser.goto(WatirSpec.files + "/font.html")
8
+ end
9
+
10
+ it "finds the font element" do
11
+ browser.font(:index, 0).should exist
12
+ end
13
+
14
+ it "knows about the color attribute" do
15
+ browser.font(:index, 0).color.should == "#ff00ff"
16
+ end
17
+
18
+ it "knows about the face attribute" do
19
+ browser.font(:index, 0).face.should == "Helvetica"
20
+ end
21
+
22
+ it "knows about the size attribute" do
23
+ browser.font(:index, 0).size.should == 12
24
+ end
25
+
26
+ end
@@ -0,0 +1,63 @@
1
+ # encoding: utf-8
2
+ require File.dirname(__FILE__) + '/spec_helper'
3
+
4
+ describe "Form" do
5
+
6
+ before :each do
7
+ browser.goto(WatirSpec.files + "/forms_with_input_elements.html")
8
+ end
9
+
10
+ describe "#exists?" do
11
+ it "returns true if the form exists" do
12
+ browser.form(:id, 'new_user').should exist
13
+ browser.form(:id, /new_user/).should exist
14
+
15
+ bug "WTR-355", :watir do
16
+ browser.form(:class, 'user').should exist
17
+ browser.form(:class, /user/).should exist
18
+ end
19
+
20
+ browser.form(:method, 'post').should exist
21
+ browser.form(:method, /post/).should exist
22
+ browser.form(:action, 'post_to_me').should exist
23
+ browser.form(:action, /to_me/).should exist
24
+ browser.form(:index, 0).should exist
25
+ browser.form(:xpath, "//form[@id='new_user']").should exist
26
+ end
27
+
28
+ it "returns false if the form doesn't exist" do
29
+ browser.form(:id, 'no_such_id').should_not exist
30
+ browser.form(:id, /no_such_id/).should_not exist
31
+
32
+ bug "WTR-355", :watir do
33
+ browser.form(:class, 'no_such_class').should_not exist
34
+ browser.form(:class, /no_such_class/).should_not exist
35
+ end
36
+
37
+ browser.form(:method, 'no_such_method').should_not exist
38
+ browser.form(:method, /no_such_method/).should_not exist
39
+ browser.form(:action, 'no_such_action').should_not exist
40
+ browser.form(:action, /no_such_action/).should_not exist
41
+ browser.form(:index, 1337).should_not exist
42
+ browser.form(:xpath, "//form[@id='no_such_id']").should_not exist
43
+ end
44
+
45
+ bug "WTR-356", :watir do
46
+ it "raises TypeError when 'what' argument is invalid" do
47
+ lambda { browser.form(:id, 3.14).exists? }.should raise_error(TypeError)
48
+ end
49
+ end
50
+
51
+ it "raises MissingWayOfFindingObjectException when 'how' argument is invalid" do
52
+ lambda { browser.form(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
53
+ end
54
+ end
55
+
56
+ describe "#submit" do
57
+ it "submits the form" do
58
+ browser.form(:id, "delete_user").submit
59
+ browser.text.should include("Semantic table")
60
+ end
61
+ end
62
+
63
+ end
@@ -0,0 +1,33 @@
1
+ # encoding: utf-8
2
+ require File.dirname(__FILE__) + '/spec_helper'
3
+
4
+ describe "Forms" do
5
+
6
+ before :each do
7
+ browser.goto(WatirSpec.files + "/forms_with_input_elements.html")
8
+ end
9
+
10
+ describe "#length" do
11
+ it "returns the number of forms in the container" do
12
+ browser.forms.length.should == 2
13
+ end
14
+ end
15
+
16
+ describe "#[]n" do
17
+ it "provides access to the nth form" do
18
+ browser.forms[0].action.should == 'post_to_me'
19
+ browser.forms[0].attribute_value('method').should == 'post'
20
+ end
21
+ end
22
+
23
+ describe "#each" do
24
+ it "iterates through forms correctly" do
25
+ browser.forms.each_with_index do |f, index|
26
+ f.name.should == browser.form(:index, index).name
27
+ f.id.should == browser.form(:index, index).id
28
+ f.class_name.should == browser.form(:index, index).class_name
29
+ end
30
+ end
31
+ end
32
+
33
+ end
@@ -0,0 +1,135 @@
1
+ # encoding: utf-8
2
+ require File.dirname(__FILE__) + '/spec_helper'
3
+
4
+ describe "Frame" do
5
+
6
+ before :each do
7
+ browser.goto(WatirSpec.files + "/frames.html")
8
+ end
9
+
10
+ it "handles crossframe javascript" do
11
+ browser.frame(:id, "frame_1").text_field(:name, 'senderElement').value.should == 'send_this_value'
12
+ browser.frame(:id, "frame_2").text_field(:name, 'recieverElement').value.should == 'old_value'
13
+ browser.frame(:id, "frame_1").button(:id, 'send').click
14
+ browser.frame(:id, "frame_2").text_field(:name, 'recieverElement').value.should == 'send_this_value'
15
+ end
16
+
17
+ not_compliant_on :watir do
18
+ describe "#exist?" do
19
+ it "returns true if the frame exists" do
20
+ browser.frame(:id, "frame_1").should exist
21
+ browser.frame(:name, "frame1").should exist
22
+ browser.frame(:index, 0).should exist
23
+
24
+ not_compliant_on :webdriver do
25
+ browser.frame(:class, "half").should exist
26
+ browser.frame(:xpath, "//frame[@id='frame_1']").should exist
27
+ browser.frame(:src, "frame_1.html").should exist
28
+ browser.frame(:id, /frame/).should exist
29
+ browser.frame(:name, /frame/).should exist
30
+ browser.frame(:src, /frame_1/).should exist
31
+ browser.frame(:class, /half/).should exist
32
+ end
33
+ end
34
+
35
+ it "returns true if the iframe exists" do
36
+ browser.goto(WatirSpec.files + "/iframes.html")
37
+ browser.frame(:id, "frame_1").should exist
38
+ browser.frame(:id, /frame/).should exist
39
+ browser.frame(:name, "frame1").should exist
40
+ browser.frame(:name, /frame/).should exist
41
+ browser.frame(:src, "frame_1.html").should exist
42
+ browser.frame(:src, /frame_1/).should exist
43
+ browser.frame(:class, "iframe").should exist
44
+ browser.frame(:class, /iframe/).should exist
45
+ browser.frame(:index, 0).should exist
46
+ browser.frame(:xpath, "//iframe[@id='frame_1']").should exist
47
+ end
48
+
49
+ it "returns false if the frame doesn't exist" do
50
+ browser.frame(:id, "no_such_id").should_not exist
51
+ browser.frame(:name, "no_such_text").should_not exist
52
+ browser.frame(:index, 1337).should_not exist
53
+
54
+ not_compliant_on :webdriver do
55
+ browser.frame(:src, "no_such_src").should_not exist
56
+ browser.frame(:class, "no_such_class").should_not exist
57
+ browser.frame(:id, /no_such_id/).should_not exist
58
+ browser.frame(:name, /no_such_text/).should_not exist
59
+ browser.frame(:src, /no_such_src/).should_not exist
60
+ browser.frame(:class, /no_such_class/).should_not exist
61
+ browser.frame(:xpath, "//frame[@id='no_such_id']").should_not exist
62
+ end
63
+ end
64
+
65
+ it "raises TypeError when 'what' argument is invalid" do
66
+ lambda { browser.frame(:id, 3.14).exists? }.should raise_error(TypeError)
67
+ end
68
+
69
+ it "raises MissingWayOfFindingObjectException when 'how' argument is invalid" do
70
+ lambda { browser.frame(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
71
+ end
72
+ end
73
+ end
74
+
75
+ it "raises UnknownFrameException when accessing elements inside non-existing frame" do
76
+ lambda { browser.frame(:name, "no_such_name").p(:index, 0).id }.should raise_error(UnknownFrameException)
77
+ end
78
+
79
+ it "raises UnknownFrameException when accessing a non-existing frame" do
80
+ lambda { browser.frame(:name, "no_such_name").id }.should raise_error(UnknownFrameException)
81
+ end
82
+
83
+ it "raises UnknownFrameException when accessing a non-existing subframe" do
84
+ lambda { browser.frame(:name, "frame1").frame(:name, "no_such_name").id }.should raise_error(UnknownFrameException)
85
+ end
86
+
87
+ it "raises UnknownObjectException when accessing a non-existing element inside an existing frame" do
88
+ lambda { browser.frame(:index, 0).p(:index, 1337).id }.should raise_error(UnknownObjectException)
89
+ end
90
+
91
+ it "raises NoMethodError when trying to access attributes it doesn't have" do
92
+ lambda { browser.frame(:index, 0).foo }.should raise_error(NoMethodError)
93
+ end
94
+
95
+ it "is able to send a value to another frame by using Javascript" do
96
+ frame1, frame2 = browser.frame(:index, 0), browser.frame(:index, 1)
97
+ frame1.text_field(:index, 0).value.should == "send_this_value"
98
+ frame2.text_field(:index, 0).value.should == "old_value"
99
+ frame1.button(:index, 0).click
100
+ frame2.text_field(:index, 0).value.should == "send_this_value"
101
+ end
102
+
103
+ it "is able to set a field" do
104
+ browser.frame(:index, 0).text_field(:name, 'senderElement').set("new value")
105
+ browser.frame(:index, 0).text_field(:name, 'senderElement').value.should == "new value"
106
+ end
107
+
108
+ not_compliant_on :watir do
109
+ describe "#execute_script" do
110
+ it "executes the given javascript in the specified frame" do
111
+ frame = browser.frame(:index, 0)
112
+ frame.div(:id, 'set_by_js').text.should == ""
113
+ frame.execute_script(%Q{document.getElementById('set_by_js').innerHTML = 'Art consists of limitation. The most beautiful part of every picture is the frame.'})
114
+ frame.div(:id, 'set_by_js').text.should == "Art consists of limitation. The most beautiful part of every picture is the frame."
115
+ end
116
+ end
117
+
118
+ describe "#elements_by_xpath" do
119
+ before :each do
120
+ browser.goto(WatirSpec.files + "/iframes.html")
121
+ end
122
+
123
+ it "returns an Array of matching elements" do
124
+ objects = browser.frame(:index, 0).elements_by_xpath("/html")
125
+ objects.size.should == 1
126
+ end
127
+
128
+ it "returns an empty Array if there are no matching elements" do
129
+ objects = browser.frame(:index, 0).elements_by_xpath("//*[@type='foobar']")
130
+ objects.size.should == 0
131
+ end
132
+ end
133
+
134
+ end
135
+ end
@@ -0,0 +1,62 @@
1
+ # encoding: utf-8
2
+ require File.dirname(__FILE__) + '/spec_helper'
3
+
4
+ not_compliant_on :watir do
5
+ describe "<frame> Frames" do
6
+
7
+ before :each do
8
+ browser.goto(WatirSpec.files + "/frames.html")
9
+ end
10
+
11
+ describe "#length" do
12
+ it "returns the correct number of frames" do
13
+ browser.frames.length.should == 2
14
+ end
15
+ end
16
+
17
+ describe "#[]" do
18
+ it "returns the frame at the given index" do
19
+ browser.frames[0].id.should == "frame_1"
20
+ end
21
+ end
22
+
23
+ describe "#each" do
24
+ it "iterates through frames correctly" do
25
+ browser.frames.each_with_index do |f, index|
26
+ f.id.should == browser.frame(:index, index).id
27
+ f.value.should == browser.frame(:index, index).value
28
+ end
29
+ end
30
+ end
31
+ end
32
+
33
+ describe "<iframe> Frames" do
34
+
35
+ before :each do
36
+ browser.goto(WatirSpec.files + "/iframes.html")
37
+ end
38
+
39
+ describe "#length" do
40
+ it "returns the correct number of frames" do
41
+ browser.frames.length.should == 2
42
+ end
43
+ end
44
+
45
+ describe "#[]" do
46
+ it "returns the frame at the given index" do
47
+ browser.frames[0].id.should == "frame_1"
48
+ end
49
+ end
50
+
51
+ describe "#each" do
52
+ it "iterates through frames correctly" do
53
+ browser.frames.each_with_index do |f, index|
54
+ f.name.should == browser.frame(:index, index).name
55
+ f.id.should == browser.frame(:index, index).id
56
+ f.value.should == browser.frame(:index, index).value
57
+ end
58
+ end
59
+ end
60
+ end
61
+
62
+ end
@@ -0,0 +1,102 @@
1
+ # encoding: utf-8
2
+ require File.dirname(__FILE__) + '/spec_helper'
3
+
4
+ describe "Hidden" do
5
+
6
+ before :each do
7
+ browser.goto(WatirSpec.files + "/forms_with_input_elements.html")
8
+ end
9
+
10
+ # Exist method
11
+ describe "#exists?" do
12
+ it "returns true if the element exists" do
13
+ browser.hidden(:id, 'new_user_interests_dolls').should exist
14
+ browser.hidden(:id, /new_user_interests_dolls/).should exist
15
+ browser.hidden(:name, 'new_user_interests').should exist
16
+ browser.hidden(:name, /new_user_interests/).should exist
17
+ browser.hidden(:value, 'dolls').should exist
18
+ browser.hidden(:value, /dolls/).should exist
19
+ # TODO: figure out what :text means for Hidden
20
+ # browser.hidden(:text, 'dolls').should exist
21
+ # browser.hidden(:text, /dolls/).should exist
22
+ browser.hidden(:class, 'fun').should exist
23
+ browser.hidden(:class, /fun/).should exist
24
+ browser.hidden(:index, 0).should exist
25
+ browser.hidden(:xpath, "//input[@id='new_user_interests_dolls']").should exist
26
+ end
27
+
28
+ it "returns false if the element does not exist" do
29
+ browser.hidden(:id, 'no_such_id').should_not exist
30
+ browser.hidden(:id, /no_such_id/).should_not exist
31
+ browser.hidden(:name, 'no_such_name').should_not exist
32
+ browser.hidden(:name, /no_such_name/).should_not exist
33
+ browser.hidden(:value, 'no_such_value').should_not exist
34
+ browser.hidden(:value, /no_such_value/).should_not exist
35
+ browser.hidden(:text, 'no_such_text').should_not exist
36
+ browser.hidden(:text, /no_such_text/).should_not exist
37
+ browser.hidden(:class, 'no_such_class').should_not exist
38
+ browser.hidden(:class, /no_such_class/).should_not exist
39
+ browser.hidden(:index, 1337).should_not exist
40
+ browser.hidden(:xpath, "//input[@id='no_such_id']").should_not exist
41
+ end
42
+
43
+ it "raises TypeError when 'what' argument is invalid" do
44
+ lambda { browser.hidden(:id, 3.14).exists? }.should raise_error(TypeError)
45
+ end
46
+
47
+ it "raises MissingWayOfFindingObjectException when 'how' argument is invalid" do
48
+ lambda { browser.hidden(:no_such_how, 'some_value').exists? }.should raise_error(MissingWayOfFindingObjectException)
49
+ end
50
+ end
51
+
52
+ # Attribute methods
53
+ describe "#id" do
54
+ it "returns the id attribute if the text field exists" do
55
+ browser.hidden(:index, 0).id.should == "new_user_interests_dolls"
56
+ end
57
+
58
+ it "raises UnknownObjectException if the text field doesn't exist" do
59
+ lambda { browser.hidden(:index, 1337).id }.should raise_error(UnknownObjectException)
60
+ end
61
+ end
62
+
63
+ describe "#name" do
64
+ it "returns the name attribute if the text field exists" do
65
+ browser.hidden(:index, 0).name.should == "new_user_interests"
66
+ end
67
+
68
+ it "raises UnknownObjectException if the text field doesn't exist" do
69
+ lambda { browser.hidden(:index, 1337).name }.should raise_error(UnknownObjectException)
70
+ end
71
+ end
72
+
73
+ describe "#type" do
74
+ it "returns the type attribute if the text field exists" do
75
+ browser.hidden(:index, 0).type.should == "hidden"
76
+ end
77
+
78
+ it "raises UnknownObjectException if the text field doesn't exist" do
79
+ lambda { browser.hidden(:index, 1337).type }.should raise_error(UnknownObjectException)
80
+ end
81
+ end
82
+
83
+ describe "#value" do
84
+ it "returns the value attribute if the text field exists" do
85
+ browser.hidden(:index, 0).value.should == "dolls"
86
+ end
87
+
88
+ it "raises UnknownObjectException if the text field doesn't exist" do
89
+ lambda { browser.hidden(:index, 1337).value }.should raise_error(UnknownObjectException)
90
+ end
91
+ end
92
+
93
+ describe "#respond_to?" do
94
+ it "returns true for all attribute methods" do
95
+ browser.hidden(:index, 0).should respond_to(:id)
96
+ browser.hidden(:index, 0).should respond_to(:name)
97
+ browser.hidden(:index, 0).should respond_to(:type)
98
+ browser.hidden(:index, 0).should respond_to(:value)
99
+ end
100
+ end
101
+
102
+ end