selenium_fury 0.6.3 → 1.0.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/lib/selenium_fury/selenium_web_driver/generic_elements/generic_element.rb +52 -0
- data/lib/selenium_fury/selenium_web_driver/generic_elements/generic_element_helpers.rb +110 -0
- data/lib/selenium_fury/selenium_web_driver/page_object_components.rb +65 -1
- data/lib/selenium_fury/selenium_web_driver/page_validator.rb +9 -6
- data/lib/selenium_fury/version.rb +1 -1
- data/lib/selenium_fury.rb +3 -0
- data/spec/selenium_web_driver/generic_elements_spec.rb +160 -0
- data/spec/selenium_web_driver/page_object_spec.rb +1 -1
- data/spec/test_page/Spacer.gif +0 -0
- data/spec/test_page/test_page.html +4 -1
- data/spec/test_page/test_page.rb +33 -0
- metadata +10 -4
@@ -0,0 +1,52 @@
|
|
1
|
+
module SeleniumFury
|
2
|
+
module SeleniumWebDriver
|
3
|
+
module PageObjectComponents
|
4
|
+
|
5
|
+
class GenericElement
|
6
|
+
include GenericElementHelpers
|
7
|
+
include ElementWaitHelpers
|
8
|
+
|
9
|
+
def initialize(locator, driver=nil, opt={})
|
10
|
+
@location = locator
|
11
|
+
@driver = driver
|
12
|
+
end
|
13
|
+
|
14
|
+
attr_accessor :location, :driver
|
15
|
+
end
|
16
|
+
|
17
|
+
class CheckboxElement < GenericElement
|
18
|
+
include CheckboxElementHelpers
|
19
|
+
include SelectableElementHelpers
|
20
|
+
end
|
21
|
+
|
22
|
+
class DropDownElement < GenericElement
|
23
|
+
include DropDownHelpers
|
24
|
+
include SelectableElementHelpers
|
25
|
+
end
|
26
|
+
|
27
|
+
class ImageElement < GenericElement
|
28
|
+
include ImageElementHelpers
|
29
|
+
end
|
30
|
+
|
31
|
+
class LinkElement < GenericElement
|
32
|
+
include LinkElementHelpers
|
33
|
+
include SelectableElementHelpers
|
34
|
+
end
|
35
|
+
|
36
|
+
class RadioButtonElement < GenericElement
|
37
|
+
include SelectableElementHelpers
|
38
|
+
end
|
39
|
+
|
40
|
+
class SubmitElement < GenericElement
|
41
|
+
include SelectableElementHelpers
|
42
|
+
end
|
43
|
+
|
44
|
+
class TextElement < GenericElement
|
45
|
+
end
|
46
|
+
|
47
|
+
class TextInputElement < GenericElement
|
48
|
+
include TextElementHelpers
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,110 @@
|
|
1
|
+
module GenericElementHelpers
|
2
|
+
def el
|
3
|
+
raise "Locator at #{location} is not present" unless present?
|
4
|
+
@driver.find_element(location)
|
5
|
+
end
|
6
|
+
|
7
|
+
def present?
|
8
|
+
list.size > 0
|
9
|
+
end
|
10
|
+
|
11
|
+
def visible?
|
12
|
+
el.displayed?
|
13
|
+
end
|
14
|
+
|
15
|
+
def list
|
16
|
+
@driver.find_elements(location)
|
17
|
+
end
|
18
|
+
|
19
|
+
def value
|
20
|
+
el.attribute('value')
|
21
|
+
end
|
22
|
+
|
23
|
+
# Use any methods from WebDriverElement not present
|
24
|
+
def method_missing method_sym, *args
|
25
|
+
if el.respond_to?(method_sym)
|
26
|
+
el.send(method_sym, *args)
|
27
|
+
else
|
28
|
+
raise NoMethodError, "No such method #{method_sym} for #{self.class}"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
module ElementWaitHelpers
|
34
|
+
def wait_present(timeout)
|
35
|
+
web_driver_wait(timeout) { present? }
|
36
|
+
end
|
37
|
+
|
38
|
+
def wait_visible(timeout)
|
39
|
+
web_driver_wait(timeout) { visible? }
|
40
|
+
end
|
41
|
+
|
42
|
+
def wait_not_present(timeout)
|
43
|
+
web_driver_wait(timeout) { !present? }
|
44
|
+
end
|
45
|
+
|
46
|
+
def wait_not_visible(timeout)
|
47
|
+
web_driver_wait(timeout) { !visible? }
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
module CheckboxElementHelpers
|
52
|
+
def checked(be_selected=true)
|
53
|
+
select unless be_selected == selected?
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
module DropDownHelpers
|
59
|
+
def selected_option
|
60
|
+
Selenium::WebDriver::Support::Select.new(el).first_selected_option.text
|
61
|
+
end
|
62
|
+
|
63
|
+
# how can be :text, :index, :value
|
64
|
+
def select_option(how=nil, what=nil)
|
65
|
+
raise "Locator at #{location} can not be interacted with" unless visible?
|
66
|
+
el.click if how.nil?
|
67
|
+
Selenium::WebDriver::Support::Select.new(el).select_by(how, what)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
module ImageElementHelpers
|
72
|
+
def text
|
73
|
+
attribute('alt')
|
74
|
+
end
|
75
|
+
|
76
|
+
def source
|
77
|
+
attribute('src')
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
module LinkElementHelpers
|
82
|
+
def link
|
83
|
+
attribute('href')
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
|
88
|
+
module SelectableElementHelpers
|
89
|
+
def select
|
90
|
+
raise "Locator at #{location} can not be interacted with" unless visible?
|
91
|
+
el.click
|
92
|
+
end
|
93
|
+
|
94
|
+
def selected?
|
95
|
+
el.selected?
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
module TextElementHelpers
|
100
|
+
def send_keys(text)
|
101
|
+
raise "Locator at #{location} can not be interacted with" unless visible?
|
102
|
+
el.clear
|
103
|
+
el.send_keys(text)
|
104
|
+
end
|
105
|
+
|
106
|
+
def send_keys!(text)
|
107
|
+
raise "Locator at #{location} can not be interacted with" unless visible?
|
108
|
+
el.send_keys(text)
|
109
|
+
end
|
110
|
+
end
|
@@ -69,7 +69,71 @@ module SeleniumFury
|
|
69
69
|
page_class.new(driver)
|
70
70
|
end
|
71
71
|
end
|
72
|
+
|
73
|
+
|
74
|
+
def generic_element(element_sym, locator, opt={})
|
75
|
+
define_method(element_sym) do
|
76
|
+
GenericElement.new(locator, driver, opt)
|
77
|
+
end
|
78
|
+
elements << element_sym unless elements.include? element_sym
|
79
|
+
end
|
80
|
+
|
81
|
+
def text_element(element_sym, locator, opt={})
|
82
|
+
define_method(element_sym) do
|
83
|
+
TextElement.new(locator, driver, opt)
|
84
|
+
end
|
85
|
+
elements << element_sym unless elements.include? element_sym
|
86
|
+
end
|
87
|
+
|
88
|
+
def link_element(element_sym, locator, opt={})
|
89
|
+
define_method(element_sym) do
|
90
|
+
LinkElement.new(locator, driver, opt)
|
91
|
+
end
|
92
|
+
elements << element_sym unless elements.include? element_sym
|
93
|
+
end
|
94
|
+
|
95
|
+
def text_input_element(element_sym, locator, opt={})
|
96
|
+
define_method(element_sym) do
|
97
|
+
TextInputElement.new(locator, driver, opt)
|
98
|
+
end
|
99
|
+
elements << element_sym unless elements.include? element_sym
|
100
|
+
end
|
101
|
+
|
102
|
+
def drop_down_element(element_sym, locator, opt={})
|
103
|
+
define_method(element_sym) do
|
104
|
+
DropDownElement.new(locator, driver, opt)
|
105
|
+
end
|
106
|
+
elements << element_sym unless elements.include? element_sym
|
107
|
+
end
|
108
|
+
|
109
|
+
def submit_element(element_sym, locator, opt={})
|
110
|
+
define_method(element_sym) do
|
111
|
+
SubmitElement.new(locator, driver, opt)
|
112
|
+
end
|
113
|
+
elements << element_sym unless elements.include? element_sym
|
114
|
+
end
|
115
|
+
|
116
|
+
def checkbox_element(element_sym, locator, opt={})
|
117
|
+
define_method(element_sym) do
|
118
|
+
CheckboxElement.new(locator, driver, opt)
|
119
|
+
end
|
120
|
+
elements << element_sym unless elements.include? element_sym
|
121
|
+
end
|
122
|
+
|
123
|
+
def image_element(element_sym, locator, opt={})
|
124
|
+
define_method(element_sym) do
|
125
|
+
ImageElement.new(locator, driver, opt)
|
126
|
+
end
|
127
|
+
elements << element_sym unless elements.include? element_sym
|
128
|
+
end
|
129
|
+
|
130
|
+
def radio_button_element(element_sym, locator, opt={})
|
131
|
+
define_method(element_sym) do
|
132
|
+
RadioButtonElement.new(locator, driver, opt)
|
133
|
+
end
|
134
|
+
elements << element_sym unless elements.include? element_sym
|
135
|
+
end
|
72
136
|
end
|
73
137
|
end
|
74
138
|
end
|
75
|
-
end
|
139
|
+
end
|
@@ -23,13 +23,17 @@ module SeleniumFury
|
|
23
23
|
puts "class #{page_class}"
|
24
24
|
page_object=page_class.new(driver)
|
25
25
|
raise "Could not find web driver elements in #{page_class}" if page_class.elements.nil?
|
26
|
-
page_class.elements.each do |
|
27
|
-
puts "\tValidating #{
|
26
|
+
page_class.elements.each do |web_driver_element_name|
|
27
|
+
puts "\tValidating #{web_driver_element_name}"
|
28
28
|
begin
|
29
|
-
page_object.
|
29
|
+
if page_object.send(web_driver_element_name).is_a? Selenium::WebDriver::Element
|
30
|
+
page_object.method(web_driver_element_name).call
|
31
|
+
else
|
32
|
+
raise unless page_object.send(web_driver_element_name).present?
|
33
|
+
end
|
30
34
|
rescue
|
31
|
-
puts "\t\t\tCould not find #{
|
32
|
-
missing_elements.push(
|
35
|
+
puts "\t\t\tCould not find #{web_driver_element_name}"
|
36
|
+
missing_elements.push(web_driver_element_name)
|
33
37
|
end
|
34
38
|
end
|
35
39
|
if missing_elements.length > 0
|
@@ -40,7 +44,6 @@ module SeleniumFury
|
|
40
44
|
end
|
41
45
|
raise "Found Missing Elements: #{missing_elements.inspect}" if missing_elements.length > 0
|
42
46
|
end
|
43
|
-
|
44
47
|
end
|
45
48
|
end
|
46
49
|
end
|
data/lib/selenium_fury.rb
CHANGED
@@ -31,6 +31,9 @@ require "selenium_fury/selenium_web_driver/page_object"
|
|
31
31
|
require "selenium_fury/selenium_web_driver/page_generator"
|
32
32
|
require "selenium_fury/selenium_web_driver/page_validator"
|
33
33
|
|
34
|
+
require "selenium_fury/selenium_web_driver/generic_elements/generic_element_helpers"
|
35
|
+
require "selenium_fury/selenium_web_driver/generic_elements/generic_element"
|
36
|
+
|
34
37
|
include SeleniumFury::SeleniumWebDriver::PageGenerator
|
35
38
|
include SeleniumFury::SeleniumWebDriver::PageValidator
|
36
39
|
|
@@ -0,0 +1,160 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe PageObject do
|
4
|
+
|
5
|
+
let(:test_page) { TestPage.new(driver) }
|
6
|
+
|
7
|
+
before(:each) do
|
8
|
+
load "test_page/test_page.rb"
|
9
|
+
launch_web_driver TEST_PAGE_URL
|
10
|
+
end
|
11
|
+
|
12
|
+
describe SeleniumFury::SeleniumWebDriver::PageObjectComponents::GenericElement do
|
13
|
+
|
14
|
+
it "should return correct object type" do
|
15
|
+
test_page.input_checkbox_element.should be_an SeleniumFury::SeleniumWebDriver::PageObjectComponents::CheckboxElement
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should return correct superclass object type" do
|
19
|
+
test_page.input_checkbox_element.should be_an SeleniumFury::SeleniumWebDriver::PageObjectComponents::GenericElement
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should provide location" do
|
23
|
+
test_page.form_element.location.should == {id: 'form'}
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should return a web driver element" do
|
27
|
+
test_page.form_element.el.should be_an Selenium::WebDriver::Element
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should find visible elements" do
|
31
|
+
test_page.form_element.visible?.should be_true
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should return the value" do
|
35
|
+
test_page.input_button_element.value.should == 'Click me'
|
36
|
+
end
|
37
|
+
|
38
|
+
it "When there is more than one element with the provided locator, it should return an array of all of them" do
|
39
|
+
test_page.listings_element.list.should be_an Array
|
40
|
+
test_page.listings_element.list[0].should be_an Selenium::WebDriver::Element
|
41
|
+
end
|
42
|
+
|
43
|
+
describe Selenium::WebDriver::Element
|
44
|
+
|
45
|
+
it "should return the correct value of a method defined in WebDriver::Element, but not GenericElement class" do
|
46
|
+
test_page.input_button_element.tag_name.should == 'input'
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should throw an WebDriver Element error when using a method not defined in either WebDriver::Element or GenericElement classes" do
|
50
|
+
expect { test_page.input_checkbox.clickit_good }.to raise_error(NoMethodError)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
|
55
|
+
describe SeleniumFury::SeleniumWebDriver::PageObjectComponents::CheckboxElement do
|
56
|
+
|
57
|
+
it "should check a checkbox not checked" do
|
58
|
+
test_page.input_checkbox_element.selected?.should be_false
|
59
|
+
test_page.input_checkbox_element.checked(true)
|
60
|
+
test_page.input_checkbox_element.selected?.should be_true
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should leave a checkbox checked when already checked" do
|
64
|
+
test_page.input_checkbox_element.click
|
65
|
+
test_page.input_checkbox_element.selected?.should be_true
|
66
|
+
test_page.input_checkbox_element.checked(true)
|
67
|
+
test_page.input_checkbox_element.selected?.should be_true
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should uncheck a checkbox when checked" do
|
71
|
+
test_page.input_checkbox_element.click
|
72
|
+
test_page.input_checkbox_element.selected?.should be_true
|
73
|
+
test_page.input_checkbox_element.checked(false)
|
74
|
+
test_page.input_checkbox_element.selected?.should be_false
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should leave a checkbox alone when already checked" do
|
78
|
+
test_page.input_checkbox_element.selected?.should be_false
|
79
|
+
test_page.input_checkbox_element.checked(false)
|
80
|
+
test_page.input_checkbox_element.selected?.should be_false
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
|
85
|
+
describe SeleniumFury::SeleniumWebDriver::PageObjectComponents::DropDownElement do
|
86
|
+
|
87
|
+
it "should select from a dropdown by value" do
|
88
|
+
test_page.select_element.select_option(:value, 'mercedes')
|
89
|
+
test_page.select_element.selected_option.should == 'Mercedes'
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should select from a dropdown by text" do
|
93
|
+
what = 'Mercedes'
|
94
|
+
test_page.select_element.select_option(:text, what)
|
95
|
+
test_page.select_element.selected_option.should == what
|
96
|
+
end
|
97
|
+
|
98
|
+
it "should select from a dropdown by index" do
|
99
|
+
test_page.select_element.select_option(:index, 3)
|
100
|
+
test_page.select_element.selected_option.should == 'Audi'
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
|
105
|
+
describe SeleniumFury::SeleniumWebDriver::PageObjectComponents::ImageElement do
|
106
|
+
|
107
|
+
it "should return the alternate text for an image" do
|
108
|
+
test_page.input_image_element.text.should == 'input image'
|
109
|
+
end
|
110
|
+
|
111
|
+
it 'should return the source of an image' do
|
112
|
+
test_page.input_image_element.attribute('src').include?('test_page/spacer.gif')
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
|
117
|
+
describe SeleniumFury::SeleniumWebDriver::PageObjectComponents::LinkElement do
|
118
|
+
|
119
|
+
it "should return the link location" do
|
120
|
+
test_page.link_element.link.should == 'http://news.ycombinator.com/'
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
|
125
|
+
describe SelectableElementHelpers do
|
126
|
+
|
127
|
+
it "should properly submit a form" do
|
128
|
+
text = "Hey buddy"
|
129
|
+
test_page.input_message_element.send_keys(text)
|
130
|
+
test_page.input_msg_button_element.select
|
131
|
+
test_page.message_element.text.should == text
|
132
|
+
end
|
133
|
+
|
134
|
+
it "should verify option is not selected" do
|
135
|
+
test_page.input_checkbox_element.selected?.should be_false
|
136
|
+
end
|
137
|
+
|
138
|
+
it "should verify option is selected" do
|
139
|
+
test_page.input_checkbox_element.select
|
140
|
+
test_page.input_checkbox_element.selected?.should be_true
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
|
145
|
+
describe TextElementHelpers do
|
146
|
+
|
147
|
+
it "should clear and write text" do
|
148
|
+
text = "Hey buddy"
|
149
|
+
test_page.textarea_element.send_keys(text)
|
150
|
+
test_page.textarea_element.value.should == text
|
151
|
+
end
|
152
|
+
|
153
|
+
it "should write text without clearing" do
|
154
|
+
existing_text = "This is a textarea field.\n "
|
155
|
+
new_text = "Hey buddy"
|
156
|
+
test_page.textarea_element.send_keys!(new_text)
|
157
|
+
test_page.textarea_element.value.should == existing_text+new_text
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
@@ -42,7 +42,7 @@ describe PageObject do
|
|
42
42
|
launch_web_driver TEST_PAGE_URL
|
43
43
|
test_page = TestPage.new(driver)
|
44
44
|
test_page.class.elements.should_not be_nil
|
45
|
-
test_page.class.elements.should have(
|
45
|
+
test_page.class.elements.should have(37).elements
|
46
46
|
test_page.method(test_page.class.elements[0]).call.class.should == Selenium::WebDriver::Element
|
47
47
|
end
|
48
48
|
|
Binary file
|
@@ -8,9 +8,12 @@
|
|
8
8
|
document.getElementById('message').innerHTML = document.form.msgtext.value
|
9
9
|
}
|
10
10
|
</script>
|
11
|
+
<style>p {display:none}</style>
|
11
12
|
</head>
|
12
13
|
<body>
|
13
14
|
|
15
|
+
<p id="not_visible">This should not be visible by default</p>
|
16
|
+
|
14
17
|
<div id="message"></div>
|
15
18
|
|
16
19
|
<ul id="element_list">
|
@@ -43,7 +46,7 @@
|
|
43
46
|
<input id="input_hidden" type="hidden"/>
|
44
47
|
<br/>
|
45
48
|
<label for="input_image">Image</label>
|
46
|
-
<input id="input_image" type="image" alt="input image"/>
|
49
|
+
<input id="input_image" type="image" alt="input image" src="spacer.gif"/>
|
47
50
|
<br/>
|
48
51
|
<label for="input_password">Password</label>
|
49
52
|
<input id="input_password" type="password"/>
|
data/spec/test_page/test_page.rb
CHANGED
@@ -17,6 +17,39 @@ class TestPage < PageObject
|
|
17
17
|
|
18
18
|
element_list :listings, { css: 'li.listing' }
|
19
19
|
|
20
|
+
|
21
|
+
generic_element :form_element, {id: 'form'}
|
22
|
+
generic_element :input_file_element, {id: 'input_file'}
|
23
|
+
generic_element :input_hidden_element, {id: 'input_hidden'}
|
24
|
+
generic_element :message_element, {id: 'message'}
|
25
|
+
generic_element :message_text_element, {name: 'msgtext'}
|
26
|
+
generic_element :fieldset_element, {css: 'fieldset'}
|
27
|
+
generic_element :listings_element, {css: 'li.listing'}
|
28
|
+
generic_element :not_visible_element, {id: 'not_visible'}
|
29
|
+
|
30
|
+
checkbox_element :input_checkbox_element, {id: 'input_checkbox'}
|
31
|
+
|
32
|
+
drop_down_element :select_element, {id: 'select'}
|
33
|
+
|
34
|
+
image_element :input_image_element, {id: 'input_image'}
|
35
|
+
|
36
|
+
link_element :link_element, {id: 'link111111'}
|
37
|
+
|
38
|
+
radio_button_element :input_radio_element, {id: 'input_radio'}
|
39
|
+
|
40
|
+
submit_element :input_button_element, {id: 'input_button'}
|
41
|
+
submit_element :input_msg_button_element, {id: 'input_msg_button'}
|
42
|
+
submit_element :input_reset_element, {id: 'input_reset'}
|
43
|
+
submit_element :input_submit_element, {id: 'input_submit'}
|
44
|
+
|
45
|
+
text_element :input_message_label_element, {css: 'label'}
|
46
|
+
|
47
|
+
text_input_element :input_message_element, {id: 'input_message'}
|
48
|
+
text_input_element :input_password_element, {id: 'input_password'}
|
49
|
+
text_input_element :input_text_element, {id: 'input_text'}
|
50
|
+
text_input_element :textarea_element, {id: 'textarea'}
|
51
|
+
|
52
|
+
|
20
53
|
def click_check_box
|
21
54
|
input_checkbox.click
|
22
55
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: selenium_fury
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.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: 2013-
|
12
|
+
date: 2013-05-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: selenium-webdriver
|
@@ -133,6 +133,8 @@ files:
|
|
133
133
|
- lib/selenium_fury/common/selenium_api_chooser.rb
|
134
134
|
- lib/selenium_fury/selenium_web_driver/create_selenium_web_driver.rb
|
135
135
|
- lib/selenium_fury/selenium_web_driver/element_finder.rb
|
136
|
+
- lib/selenium_fury/selenium_web_driver/generic_elements/generic_element.rb
|
137
|
+
- lib/selenium_fury/selenium_web_driver/generic_elements/generic_element_helpers.rb
|
136
138
|
- lib/selenium_fury/selenium_web_driver/page_generator.rb
|
137
139
|
- lib/selenium_fury/selenium_web_driver/page_object.rb
|
138
140
|
- lib/selenium_fury/selenium_web_driver/page_object_components.rb
|
@@ -142,10 +144,12 @@ files:
|
|
142
144
|
- spec/common/page_parser_spec.rb
|
143
145
|
- spec/common/selenium_api_chooser_spec.rb
|
144
146
|
- spec/selenium_web_driver/element_finder_spec.rb
|
147
|
+
- spec/selenium_web_driver/generic_elements_spec.rb
|
145
148
|
- spec/selenium_web_driver/page_generator_spec.rb
|
146
149
|
- spec/selenium_web_driver/page_object_spec.rb
|
147
150
|
- spec/selenium_web_driver/page_validator_spec.rb
|
148
151
|
- spec/spec_helper.rb
|
152
|
+
- spec/test_page/Spacer.gif
|
149
153
|
- spec/test_page/test_page.html
|
150
154
|
- spec/test_page/test_page.rb
|
151
155
|
- spec/test_page/test_page_custom_generator_configuration.rb
|
@@ -163,7 +167,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
163
167
|
version: '0'
|
164
168
|
segments:
|
165
169
|
- 0
|
166
|
-
hash:
|
170
|
+
hash: -4010786722862812326
|
167
171
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
168
172
|
none: false
|
169
173
|
requirements:
|
@@ -172,7 +176,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
172
176
|
version: '0'
|
173
177
|
segments:
|
174
178
|
- 0
|
175
|
-
hash:
|
179
|
+
hash: -4010786722862812326
|
176
180
|
requirements: []
|
177
181
|
rubyforge_project:
|
178
182
|
rubygems_version: 1.8.25
|
@@ -189,10 +193,12 @@ test_files:
|
|
189
193
|
- spec/common/page_parser_spec.rb
|
190
194
|
- spec/common/selenium_api_chooser_spec.rb
|
191
195
|
- spec/selenium_web_driver/element_finder_spec.rb
|
196
|
+
- spec/selenium_web_driver/generic_elements_spec.rb
|
192
197
|
- spec/selenium_web_driver/page_generator_spec.rb
|
193
198
|
- spec/selenium_web_driver/page_object_spec.rb
|
194
199
|
- spec/selenium_web_driver/page_validator_spec.rb
|
195
200
|
- spec/spec_helper.rb
|
201
|
+
- spec/test_page/Spacer.gif
|
196
202
|
- spec/test_page/test_page.html
|
197
203
|
- spec/test_page/test_page.rb
|
198
204
|
- spec/test_page/test_page_custom_generator_configuration.rb
|