web-object 0.4 → 0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +22 -5
- data/lib/web-object.rb +2 -1
- data/lib/web-object/element.rb +2 -2
- data/lib/web-object/elements.rb +2 -2
- data/lib/web-object/version +1 -1
- metadata +14 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: b6bc163b8bfd817dd11f71e18855f808e4f41cbdda5b3863f9d550138540919e
|
4
|
+
data.tar.gz: cde989774f512ec5c9e39258010027a995e08244baf03539205bfd792cd38c43
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5ec9c7831732943d58a7a77dbc86a2b0d58432f94cec052f2f5c4acfd550d971e973d5fb5cce42ecf23231edc1ff2713ecc0179b1b2eb269afda7e9974f99e94
|
7
|
+
data.tar.gz: 6e7c73fda1b76bfcac63ed9961d620c9f9cfae0075577985762b68d61a9cafe087779bb44e7aa32695871deeae46a0b448b67778fb5911c9e6bce76f6dd7334b
|
data/README.md
CHANGED
@@ -5,7 +5,10 @@ Now what does original webdriver flavor is, it simply means, no additional wrapp
|
|
5
5
|
Hence just create page-objects and start using basic webdriver commands on it.
|
6
6
|
|
7
7
|
Moral of the story, elements created using web-object gem will be objects of WebElement class and one can perform all webdriver
|
8
|
-
commands on it like send_keys, click, displayed? .. and so on...
|
8
|
+
commands on it like send_keys, click, displayed? .. and so on...
|
9
|
+
|
10
|
+
WebObject gem is completely compatible with Appium and can also be used for ruby-appium frameworks, to sound a little more mobile-like, WebObject class has an alias called **AppObject** to be used instead PageObjects in case of Mobile frameworks..
|
11
|
+
|
9
12
|
|
10
13
|
## Table of Contents
|
11
14
|
- [Installation](#install)
|
@@ -135,10 +138,11 @@ Eg of error handling as mentioned above:
|
|
135
138
|
|
136
139
|
|
137
140
|
## <a name="usage"></a> Usage :eyes:
|
138
|
-
Now as we saw how to create page objects, lets see how to put it to practical use.
|
141
|
+
Now as we saw how to create page objects, lets see how to put it to practical use.
|
139
142
|
|
143
|
+
**Web Usage**
|
140
144
|
```
|
141
|
-
class
|
145
|
+
class LoginPage < WebObject
|
142
146
|
element :login_email, {:id => "email"}
|
143
147
|
element :login_password, {:css => "#pwd"}
|
144
148
|
element :login_button, {:xpath => "//button[@id='signin']"}
|
@@ -155,7 +159,16 @@ class Login < WebObject
|
|
155
159
|
end
|
156
160
|
end
|
157
161
|
```
|
158
|
-
|
162
|
+
|
163
|
+
**App or Mobile Usage**
|
164
|
+
```
|
165
|
+
class LoginScreen < AppObject
|
166
|
+
element :username_field, {accessibility_id: "username"}
|
167
|
+
element :password_field, {predicate: 'name=="password"'}
|
168
|
+
element :login_button, {class_chain: "**/XCUIElementTypeButton[`value=='Log In'`]"}
|
169
|
+
end
|
170
|
+
```
|
171
|
+
|
159
172
|
## <a name="webconditions"></a> WebConditions :eyes:
|
160
173
|
Always envied the fancy ExpectedConditions class which Java and Python has where they smoothly pass a condition within the WebDriver explicit wait object... And when it comes to Ruby, you need to go through a painfully lenghty procudere of creating your own method or fallback to other framweworks like Capybara or Watir loosing the original WebDriver flavor.
|
161
174
|
|
@@ -183,7 +196,11 @@ Full list of WebConditions and [documentation](https://github.com/krupani/web-ob
|
|
183
196
|
## <a name="alias"></a> Aliases :eyes:
|
184
197
|
There is an option to use PageObject class instead of WebObject.
|
185
198
|
Eg:
|
186
|
-
``` class LoginPage < PageObject ```
|
199
|
+
``` class LoginPage < PageObject ```
|
200
|
+
|
201
|
+
There is an option to use AppObject class instead of WebObject to sound more mobile-like for appium frameworks.
|
202
|
+
Eg:
|
203
|
+
``` class DashboardScreen < AppObject ```
|
187
204
|
|
188
205
|
Also for elements as mentioned above
|
189
206
|
for `element` there is an option to use `find` (for capybara flavor loving people)
|
data/lib/web-object.rb
CHANGED
data/lib/web-object/element.rb
CHANGED
@@ -18,9 +18,9 @@ module Element
|
|
18
18
|
wait = Selenium::WebDriver::Wait.new(:timeout => 0.5)
|
19
19
|
begin
|
20
20
|
wait.until { @driver.find_element(locator) }
|
21
|
-
rescue Selenium::WebDriver::Error::
|
21
|
+
rescue Selenium::WebDriver::Error::TimeoutError
|
22
22
|
if error
|
23
|
-
raise "Could not find element using '#{locator.first.
|
23
|
+
raise "Could not find element using '#{locator.first.first}=#{locator.first.last}' strategy"
|
24
24
|
else
|
25
25
|
return false
|
26
26
|
end
|
data/lib/web-object/elements.rb
CHANGED
@@ -19,9 +19,9 @@ module Elements
|
|
19
19
|
begin
|
20
20
|
wait.until { !@driver.find_elements(locator).empty? }
|
21
21
|
@driver.find_elements(locator)
|
22
|
-
rescue Selenium::WebDriver::Error::
|
22
|
+
rescue Selenium::WebDriver::Error::TimeoutError
|
23
23
|
if error
|
24
|
-
raise "Could not find any elements using '#{locator.first.
|
24
|
+
raise "Could not find any elements using '#{locator.first.first}=#{locator.first.last}' strategy"
|
25
25
|
else
|
26
26
|
return []
|
27
27
|
end
|
data/lib/web-object/version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.5
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: web-object
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.5'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kaushal Rupani
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-06-03 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Helps in generating page object style framework using original webdriver
|
14
14
|
flavor
|
@@ -49,7 +49,7 @@ files:
|
|
49
49
|
- lib/web-object/element.rb
|
50
50
|
- lib/web-object/elements.rb
|
51
51
|
- lib/web-object/version
|
52
|
-
homepage: https://github.com/krupani/
|
52
|
+
homepage: https://github.com/krupani/web-object
|
53
53
|
licenses:
|
54
54
|
- MIT
|
55
55
|
metadata: {}
|
@@ -68,27 +68,26 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: '0'
|
70
70
|
requirements: []
|
71
|
-
|
72
|
-
rubygems_version: 2.6.12
|
71
|
+
rubygems_version: 3.0.3
|
73
72
|
signing_key:
|
74
73
|
specification_version: 4
|
75
74
|
summary: Page Objects in Original WebDriver flavor + Vast list of Expected Conditions
|
76
75
|
and WebDriver Utilities
|
77
76
|
test_files:
|
78
|
-
- features/
|
79
|
-
- features/
|
80
|
-
- features/scenarios/element_interaction.feature
|
81
|
-
- features/scenarios/element_property.feature
|
77
|
+
- features/support/env.rb
|
78
|
+
- features/support/hooks.rb
|
82
79
|
- features/scenarios/text.feature
|
83
|
-
- features/scenarios/
|
80
|
+
- features/scenarios/element_property.feature
|
84
81
|
- features/scenarios/url.feature
|
85
|
-
- features/
|
82
|
+
- features/scenarios/title.feature
|
83
|
+
- features/scenarios/alert.feature
|
84
|
+
- features/scenarios/element_interaction.feature
|
86
85
|
- features/step_definitions/element_interaction_steps.rb
|
87
|
-
- features/step_definitions/
|
86
|
+
- features/step_definitions/alert_steps.rb
|
88
87
|
- features/step_definitions/text_steps.rb
|
89
|
-
- features/step_definitions/title_steps.rb
|
90
88
|
- features/step_definitions/url_steps.rb
|
91
|
-
- features/
|
92
|
-
- features/
|
89
|
+
- features/step_definitions/element_property_steps.rb
|
90
|
+
- features/step_definitions/title_steps.rb
|
91
|
+
- features/pages/web_object_form_page.rb
|
93
92
|
- cucumber.yml
|
94
93
|
- Rakefile
|