selenium_fury 1.0.3 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/selenium_fury/selenium_web_driver/generic_elements/generic_element_helpers.rb +26 -8
- data/lib/selenium_fury/version.rb +1 -1
- data/spec/selenium_fury/selenium_web_driver/generic_elements/generic_elements_spec.rb +32 -6
- data/spec/selenium_fury/selenium_web_driver/page_generator_spec.rb +1 -1
- data/spec/selenium_fury/selenium_web_driver/page_object_spec.rb +1 -1
- data/spec/test_page/test_page.html +2 -0
- data/spec/test_page/test_page.rb +1 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 71bbb0033e7a5217b2ff30149441d125c778262c
|
4
|
+
data.tar.gz: fba6daa554baa20fd1ca1b6f9f532eb25f6ac08a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5c9e76b9f50b49aa0a4b305981229921176d9120251879efe81956b5e00ef68af8bac22be597d977d7a585d8362383ea3166977f9773526f60ad2a0742e5e0fe
|
7
|
+
data.tar.gz: b4aa5b73f72fe7f878ba9f7e7b8f94e91e6d5b447d96276732357e490fe77cd573bf99eced15fb517f96574a336d6a2b96d319b0c8a08a0f282f4392b010d942
|
@@ -4,24 +4,28 @@ module GenericElementHelpers
|
|
4
4
|
@driver.find_element(location)
|
5
5
|
end
|
6
6
|
|
7
|
+
def list
|
8
|
+
(1..number_matching).map { |i| self.class.new({css: location[:css]+":nth-of-type(#{i})"}, @driver) }
|
9
|
+
end
|
10
|
+
|
7
11
|
def present?
|
8
12
|
# Set implicit wait to zero so it doesn't wait that time each method call
|
9
13
|
implicit_wait = driver.manage.timeouts.implicit_wait
|
10
14
|
driver.manage.timeouts.implicit_wait = 0
|
11
|
-
present =
|
15
|
+
present = number_matching > 0
|
12
16
|
driver.manage.timeouts.implicit_wait = implicit_wait
|
13
17
|
present
|
14
18
|
end
|
15
19
|
|
20
|
+
def number_matching
|
21
|
+
@driver.find_elements(location).size
|
22
|
+
end
|
23
|
+
|
16
24
|
# Raises error if not already present
|
17
25
|
def visible?
|
18
26
|
el.displayed?
|
19
27
|
end
|
20
28
|
|
21
|
-
def list
|
22
|
-
@driver.find_elements(location)
|
23
|
-
end
|
24
|
-
|
25
29
|
def value
|
26
30
|
el.attribute('value')
|
27
31
|
end
|
@@ -30,6 +34,18 @@ module GenericElementHelpers
|
|
30
34
|
@driver.action.move_to(el).perform
|
31
35
|
end
|
32
36
|
|
37
|
+
def double_click
|
38
|
+
@driver.action.double_click(el).perform
|
39
|
+
end
|
40
|
+
|
41
|
+
def double_click!
|
42
|
+
el.click
|
43
|
+
rescue Exception => e
|
44
|
+
puts "Encountered #{e.class} trying to click element at #{self.location}"
|
45
|
+
ensure
|
46
|
+
el.click
|
47
|
+
end
|
48
|
+
|
33
49
|
# Use any methods from WebDriverElement not present
|
34
50
|
def method_missing method_sym, *args
|
35
51
|
if el.respond_to?(method_sym)
|
@@ -86,7 +102,7 @@ module DropDownHelpers
|
|
86
102
|
Selenium::WebDriver::Support::Select.new(el).first_selected_option.text
|
87
103
|
end
|
88
104
|
|
89
|
-
|
105
|
+
# how can be :text, :index, :value
|
90
106
|
def select_option(how=nil, what=nil)
|
91
107
|
raise "Locator at #{location} can not be interacted with" unless visible?
|
92
108
|
el.click if how.nil?
|
@@ -116,7 +132,7 @@ module SelectableElementHelpers
|
|
116
132
|
el.selected?
|
117
133
|
end
|
118
134
|
|
119
|
-
|
135
|
+
# Raises error if not selectable
|
120
136
|
def select!
|
121
137
|
raise "Locator at #{location} is not visible" unless visible?
|
122
138
|
begin
|
@@ -138,7 +154,9 @@ module SelectableElementHelpers
|
|
138
154
|
end
|
139
155
|
|
140
156
|
# Overwrite in your project if desired
|
141
|
-
def check_errors;
|
157
|
+
def check_errors;
|
158
|
+
end
|
159
|
+
|
142
160
|
def retry_select(exception)
|
143
161
|
raise "Locator at #{location} can not be interacted with - Failed with #{exception}"
|
144
162
|
end
|
@@ -59,9 +59,35 @@ describe PageObject do
|
|
59
59
|
test_page.input_button_element.value.should == 'Click me'
|
60
60
|
end
|
61
61
|
|
62
|
-
|
62
|
+
|
63
|
+
describe '#double_click' do
|
64
|
+
it 'should double-click the given element' do
|
65
|
+
status_before = test_page.input_doubleclick['readonly']
|
66
|
+
test_page.input_doubleclick.double_click
|
67
|
+
status_after = test_page.input_doubleclick['readonly']
|
68
|
+
|
69
|
+
status_after.should_not == status_before
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
describe '#double_click!' do
|
74
|
+
it 'should simply invoke click twice, ignoring any errors encountered on the initial click' do
|
75
|
+
status_before = test_page.input_doubleclick['readonly']
|
76
|
+
test_page.input_doubleclick.double_click!
|
77
|
+
status_after = test_page.input_doubleclick['readonly']
|
78
|
+
|
79
|
+
status_after.should == status_before # Because two #click()'s does not equal one #dblclick()
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
it 'When there is more than one element with the provided locator, it should return an array of GenericElements' do
|
63
84
|
test_page.listings_element.list.should be_an Array
|
64
|
-
test_page.listings_element.list[0].should
|
85
|
+
test_page.listings_element.list[0].should be_a SeleniumFury::SeleniumWebDriver::PageObjectComponents::GenericElement
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'List element should provide correct information' do
|
89
|
+
test_page.listings_element.list[0].location.should == {css: 'li.listing:nth-of-type(1)'}
|
90
|
+
test_page.listings_element.list[0].text.should == 'Herpa'
|
65
91
|
end
|
66
92
|
|
67
93
|
describe Selenium::WebDriver::Element
|
@@ -171,13 +197,13 @@ describe PageObject do
|
|
171
197
|
end
|
172
198
|
|
173
199
|
it 'should throw not visible error if element to select is not visible and ! is specified' do
|
174
|
-
expect {wait_element.not_visible.select!}.
|
175
|
-
|
200
|
+
expect { wait_element.not_visible.select! }.
|
201
|
+
to raise_exception(RuntimeError, "Locator at #{wait_element.not_visible.location.to_s} is not visible")
|
176
202
|
end
|
177
203
|
|
178
204
|
it 'should throw timeout error if element to select is not visible and ! is not specified' do
|
179
|
-
expect {wait_element.not_visible.select}.
|
180
|
-
|
205
|
+
expect { wait_element.not_visible.select }.
|
206
|
+
to raise_exception(Selenium::WebDriver::Error::TimeOutError)
|
181
207
|
end
|
182
208
|
end
|
183
209
|
|
@@ -3,7 +3,7 @@ describe SeleniumFury::SeleniumWebDriver::PageGenerator do
|
|
3
3
|
it "should find elements on the Test page" do
|
4
4
|
launch_web_driver TEST_PAGE_URL
|
5
5
|
result = generate(driver)
|
6
|
-
result.should include 'found (
|
6
|
+
result.should include 'found (16 elements)'
|
7
7
|
result.should include 'element :form, {:id => "form"}'
|
8
8
|
end
|
9
9
|
it "should return a TestPage page object" do
|
@@ -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(40).elements
|
46
46
|
test_page.method(test_page.class.elements[0]).call.class.should == Selenium::WebDriver::Element
|
47
47
|
end
|
48
48
|
|
@@ -63,6 +63,8 @@
|
|
63
63
|
<label for="input_text">Text</label>
|
64
64
|
<input id="input_text" type="text"/>
|
65
65
|
<br/>
|
66
|
+
<label for="input_requires_double_click">This input requires double click</label>
|
67
|
+
<input id="input_requires_double_click" type="text" value="asdf" readonly="true" ondblclick="this.readOnly='';">
|
66
68
|
<fieldset>
|
67
69
|
<legend>Input test:</legend>
|
68
70
|
<label for="input_message">Message Text:</label>
|
data/spec/test_page/test_page.rb
CHANGED
@@ -26,6 +26,7 @@ class TestPage < PageObject
|
|
26
26
|
generic_element :fieldset_element, {css: 'fieldset'}
|
27
27
|
generic_element :listings_element, {css: 'li.listing'}
|
28
28
|
generic_element :not_visible_element, {id: 'not_visible'}
|
29
|
+
generic_element :input_doubleclick, {:id => 'input_requires_double_click'}
|
29
30
|
|
30
31
|
checkbox_element :input_checkbox_element, {id: 'input_checkbox'}
|
31
32
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: selenium_fury
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Scott Sims
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-07-
|
11
|
+
date: 2013-07-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: selenium-webdriver
|
@@ -188,7 +188,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
188
188
|
version: '0'
|
189
189
|
requirements: []
|
190
190
|
rubyforge_project:
|
191
|
-
rubygems_version: 2.0.
|
191
|
+
rubygems_version: 2.0.5
|
192
192
|
signing_key:
|
193
193
|
specification_version: 4
|
194
194
|
summary: Generate Selenium Page Objects
|