site-object 0.4.5 → 0.4.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/site-object/page.rb +25 -45
- data/lib/site-object/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 76f3e751539020ff7af4782aaa508521924d3016
|
4
|
+
data.tar.gz: 36d5a1a86b6b81a7651f4afbaebe580b5a51ad87
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 88b1483f6249fcb4e4ff845d903394a11668a7252b34117b3bf2a5914fba32ad5703cccc85891a68ba2ba5f47be47f7184871e329ef45686226ea242a5a87ceb
|
7
|
+
data.tar.gz: 6e355f2c33218f1ba25208ef07b625254e0c4be776e43d0659bab216b88bfb5312169fa689095a7847aac2c5043c6320a9b1beee93a20a0afb2865a9f4a014a2
|
data/lib/site-object/page.rb
CHANGED
@@ -74,7 +74,7 @@ module PageObject
|
|
74
74
|
Module.cattr_accessor :page_features
|
75
75
|
end
|
76
76
|
|
77
|
-
attr_reader :page_attributes, :page_elements, :page_url, :url_template, :url_matcher
|
77
|
+
attr_reader :page_attributes, :page_elements, :page_url, :url_template, :url_matcher, :has_fragment
|
78
78
|
|
79
79
|
# DEPRECATED. Use the set_attributes method instead.
|
80
80
|
# This method can be used to disable page navigation when defining a page class (it sets an
|
@@ -180,8 +180,8 @@ module PageObject
|
|
180
180
|
@arguments ||= @url_template.keys.map { |k| k.to_sym }
|
181
181
|
end
|
182
182
|
|
183
|
-
def
|
184
|
-
required_arguments.find { |x| @url_template.pattern =~
|
183
|
+
def query_arguments
|
184
|
+
required_arguments.find { |x| @url_template.pattern =~ /\?.*#{x}=*/ }
|
185
185
|
end
|
186
186
|
|
187
187
|
# Used to define the full or relative URL to the page. Typically, you will *almost* *always* want to use
|
@@ -285,6 +285,7 @@ module PageObject
|
|
285
285
|
else
|
286
286
|
@url_template = Addressable::Template.new(Addressable::URI.parse("#{base_url}#{@page_url}"))
|
287
287
|
end
|
288
|
+
@has_fragment = @url_template.pattern =~ /#/
|
288
289
|
end
|
289
290
|
|
290
291
|
# Optional. Allows you to specify a fallback mechanism for checking to see if the correct page is
|
@@ -320,7 +321,7 @@ module PageObject
|
|
320
321
|
end
|
321
322
|
|
322
323
|
module PageInstanceMethods
|
323
|
-
attr_reader :arguments, :browser, :page_attributes, :page_elements, :page_features, :page_url, :
|
324
|
+
attr_reader :arguments, :browser, :has_fragment, :page_attributes, :page_elements, :page_features, :page_url, :query_arguments, :required_arguments, :site, :url_template, :url_matcher
|
324
325
|
|
325
326
|
# Takes the name of a page class. If the current page is of that class then it returns a page
|
326
327
|
# object for the page. Raises a SiteObject::WrongPageError if that's not the case.
|
@@ -343,7 +344,9 @@ module PageObject
|
|
343
344
|
@site = site
|
344
345
|
@url_matcher = self.class.url_matcher
|
345
346
|
@url_template = self.class.url_template
|
346
|
-
@
|
347
|
+
@query_arguments = self.class.query_arguments
|
348
|
+
@has_fragment = self.class.has_fragment
|
349
|
+
|
347
350
|
|
348
351
|
# Try to expand the URL template if the URL has parameters.
|
349
352
|
@arguments = {}.with_indifferent_access # Stores the param list that will expand the url_template after examining the arguments used to initialize the page.
|
@@ -416,45 +419,21 @@ module PageObject
|
|
416
419
|
"#<#{self.class.name}:#{object_id} @url_template=#{@url_template.inspect}>"
|
417
420
|
end
|
418
421
|
|
419
|
-
# Returns true if the page defined by the page object is currently being displayed in the browser,
|
420
|
-
# false if not. It does this in two different ways, which are described below.
|
421
|
-
#
|
422
|
-
# A page always has a URL defined for it. This is typically done by using the Page.set_url method
|
423
|
-
# to specify a URL when defining the page. You can skip using the set_url method but in that case
|
424
|
-
# the page URL defaults to the base URL defined for the site object.
|
425
|
-
#
|
426
|
-
# The default approach for determining if the page is being displayed relies on the URL defined for
|
427
|
-
# the page. This method first does a general match against the current browser URL page's URL template.
|
428
|
-
# If a match occurs here, and there are no required arguments for the page the method returns true.
|
429
|
-
# If the page's URL template does require arguments the method performs an additional check to
|
430
|
-
# verify that each of the arguments defined for the page match what's in the current browser URL.
|
431
|
-
# If all of the arguments match then the method will return true.
|
432
|
-
#
|
433
|
-
# This should work for most cases but may not always be enough. For example, there may be a redirect
|
434
|
-
# and the URL used to navigate to the page may not be the final page URL. There's a fallback
|
435
|
-
# mechanism for these sorts of situations. You can use the Page.set_url_matcher method to define a
|
436
|
-
# regular expression that the method will use in place of the URL template. If the regular expression
|
437
|
-
# matches, then the method will return true even if the URL wouldn't match the URL template.
|
438
|
-
#
|
439
|
-
# It's better to use the default URL matching if possible. But if for some reason it's not feasible
|
440
|
-
# you can use the alternate method to specify how to match the page.
|
441
422
|
def on_page?
|
442
|
-
if @
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
if @
|
452
|
-
url =
|
453
|
-
elsif @browser.is_a? Selenium::WebDriver::Driver
|
454
|
-
url = @browser.current_url.split(/(\?|#)/)[0]
|
455
|
-
else
|
456
|
-
raise SiteObject::BrowserLibraryNotSupportedError, "Unsupported browser library: #{@browser.class}"
|
423
|
+
if @browser.is_a? Watir::Browser
|
424
|
+
url = @browser.url
|
425
|
+
elsif @browser.is_a? Selenium::WebDriver::Driver
|
426
|
+
url = @browser.current_url
|
427
|
+
else
|
428
|
+
raise SiteObject::BrowserLibraryNotSupportedError, "Unsupported browser library: #{@browser.class}"
|
429
|
+
end
|
430
|
+
|
431
|
+
if query_arguments
|
432
|
+
if @has_fragment
|
433
|
+
url = url.split(/#/)[0]
|
457
434
|
end
|
435
|
+
else
|
436
|
+
url = url.split(/\?/)[0]
|
458
437
|
end
|
459
438
|
|
460
439
|
if @url_matcher && @url_matcher =~ url
|
@@ -463,12 +442,13 @@ module PageObject
|
|
463
442
|
if @arguments.empty?
|
464
443
|
return true
|
465
444
|
else
|
466
|
-
if
|
467
|
-
|
468
|
-
|
445
|
+
if pargs = @url_template.extract(Addressable::URI.parse(url))
|
446
|
+
pargs = pargs.with_indifferent_access
|
447
|
+
@required_arguments.all? { |k| pargs[k] == @arguments[k].to_s }
|
469
448
|
end
|
470
449
|
end
|
471
450
|
end
|
451
|
+
|
472
452
|
end
|
473
453
|
|
474
454
|
def navigation_disabled?
|
data/lib/site-object/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: site-object
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Fitisoff
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-05-
|
11
|
+
date: 2016-05-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|