webaccount 0.2.4 → 0.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4cce96c2044c13d2c9aeb074b70b18e1d3eaf2fa6e02541680b29b09a68232f4
4
- data.tar.gz: 063622745d43653265bd7ccd39d5fda4ec33fc9ca429164bd4fca4b3aad81dce
3
+ metadata.gz: 5f2306cf382f2ebbba8b93e9746e12c92d298ead4ba4f154fc71c223d844e2e0
4
+ data.tar.gz: c1b04987b7f1812c549fd8f0203457e515aab18e716f2885c29494c07688baf8
5
5
  SHA512:
6
- metadata.gz: 341e908a3c1fba2c276b38f3b82de622e7389d1f42e8eb563ac152b5819183ccd6e28e2c883282fa909dd23516a786a9527bba2894bb605e945671683051977c
7
- data.tar.gz: 33061d6aa6d5d7f84f23243761b653ea546d523ad8b3066317f1d916e80da987cf510fc8cedc1253fddc19c1ff0862f7554fd2b62aeb55ab1ca4870758fb924f
6
+ metadata.gz: 2f488ddda68db8c4807e5ad7ada9c8f85f48219a97e24be6f1ea6d1033395993a9bf6a74de615b539bdab6c749e7a11c3c4a1d04256dd94cfba743a2aadb0f8d
7
+ data.tar.gz: 86b9e301db625c6e236da7290d916a1fa629d3cdabf74cc4cb8f61f0b25d837a8b6bd5e5cec6b357b5f3baea0ff6d4d71739ddc7ac463089ee1a4a06df5e73bc
@@ -0,0 +1,28 @@
1
+ # Thoran/Array/AllButFirst/all_but_first.rb
2
+ # Thoran::Array::AllButFirst#all_but_first
3
+
4
+ # 20141223
5
+ # 0.1.0
6
+
7
+ # Description: This returns a copy of the receiving array with the first element removed.
8
+
9
+ # Changes:
10
+ # 1. + Thoran namespace.
11
+
12
+ require 'Thoran/Array/FirstX/firstX'
13
+
14
+ module Thoran
15
+ module Array
16
+ module AllButFirst
17
+
18
+ def all_but_first
19
+ d = self.dup
20
+ d.first!
21
+ d
22
+ end
23
+
24
+ end
25
+ end
26
+ end
27
+
28
+ Array.send(:include, Thoran::Array::AllButFirst)
@@ -0,0 +1,21 @@
1
+ # Thoran/Array/FirstX/firstX.rb
2
+ # Thoran::Array::FirstX#first!
3
+
4
+ # 20141223
5
+ # 0.1.0
6
+
7
+ # Description: Sometimes it makes more sense to treat arrays this way.
8
+
9
+ module Thoran
10
+ module Array
11
+ module FirstX
12
+
13
+ def first!
14
+ shift
15
+ end
16
+
17
+ end
18
+ end
19
+ end
20
+
21
+ Array.send(:include, Thoran::Array::FirstX)
@@ -1,8 +1,8 @@
1
1
  # Thoran/Selenium/WebDriver/Attempt/attempt.rb
2
2
  # Thoran::Selenium::WebDriver::Attempt.attempt
3
3
 
4
- # 20200418
5
- # 0.0.0
4
+ # 20200419
5
+ # 0.0.1
6
6
 
7
7
  # Examples:
8
8
  # 1. driver.attempt do |driver|
@@ -27,7 +27,7 @@ module Thoran
27
27
  begin
28
28
  yield
29
29
  break
30
- rescue Timeout::Error, Selenium::WebDriver::Error::UnknownError, Selenium::WebDriver::Error::NoSuchElementError => e
30
+ rescue Timeout::Error, ::Selenium::WebDriver::Error::UnknownError, ::Selenium::WebDriver::Error::NoSuchElementError => e
31
31
  attempts += 1
32
32
  if attempts >= max_attempts
33
33
  @driver.quit
@@ -1,8 +1,8 @@
1
1
  # Thoran/Selenium/WebDriver/Setup/setup.rb
2
2
  # Thoran::Selenium::WebDriver.setup
3
3
 
4
- # 20200418
5
- # 0.0.0
4
+ # 20200419
5
+ # 0.0.1
6
6
 
7
7
  # Usage:
8
8
  # 1. Binary is in the path:
@@ -24,16 +24,14 @@ module Thoran
24
24
  module WebDriver
25
25
  module Setup
26
26
 
27
- module_function
28
-
29
27
  def setup(path_or_browser)
30
28
  if File.exist?(File.expand_path(path_or_browser.to_s))
31
29
  path = path_or_browser
32
- Selenium::WebDriver.at(path)
33
- Selenium::WebDriver.for(selenium_browser(path))
30
+ at(path)
31
+ ::Selenium::WebDriver.for(selenium_browser(path))
34
32
  else
35
33
  browser = path_or_browser.to_sym.downcase
36
- Selenium::WebDriver.for(browser)
34
+ ::Selenium::WebDriver.for(browser)
37
35
  end
38
36
  end
39
37
 
@@ -63,6 +61,6 @@ end
63
61
 
64
62
  module Selenium
65
63
  module WebDriver
66
- include Thoran::Selenium::WebDriver::Setup
64
+ extend Thoran::Selenium::WebDriver::Setup
67
65
  end
68
66
  end
@@ -0,0 +1,47 @@
1
+ # Thoran/String/ToConst/to_const.rb
2
+ # Thoran::String::ToConst#to_const
3
+
4
+ # 20141223
5
+ # 0.2.0
6
+
7
+ # Description: This takes a string and returns a constant, with unlimited namespacing.
8
+
9
+ # History: Derived from Object#to_const 0.3.0, and superceding Object#to_const.
10
+
11
+ # Changes:
12
+ # 1. + Thoran namespace.
13
+
14
+ # Todo:
15
+ # 1. This only works for two levels of constants. Three and you're stuffed. So, this needs to be recursive...
16
+ # Done iteratively as of 0.1.0.
17
+ # 2. Make this work for symbols. However, this will only work if there's no namespacing. ie. :A is OK, but :A::B is not.
18
+
19
+ # Discussion:
20
+ # 1. Should this go separately into classes for which ::const_get will work and be removed from Object? Done as of 0.1.0.
21
+
22
+ require 'Thoran/Array/AllButFirst/all_but_first'
23
+
24
+ module Thoran
25
+ module String
26
+ module ToConst
27
+
28
+ def to_const
29
+ if self =~ /::/
30
+ constants = self.split('::')
31
+ constant = Object.const_get(constants.first)
32
+ constants = constants.all_but_first
33
+ until constants.empty? do
34
+ constant = constant.const_get(constants.shift)
35
+ end
36
+ else
37
+ constant = Object.const_get(self)
38
+ end
39
+ constant
40
+ end
41
+ alias_method :to_constant, :to_const
42
+
43
+ end
44
+ end
45
+ end
46
+
47
+ String.send(:include, Thoran::String::ToConst)
@@ -1,5 +1,5 @@
1
1
  class WebAccount
2
2
 
3
- VERSION = '0.2.4'
3
+ VERSION = '0.3.0'
4
4
 
5
5
  end
data/lib/WebAccount.rb CHANGED
@@ -13,16 +13,16 @@ class WebAccount
13
13
  def initialize(
14
14
  username: nil, password: nil,
15
15
  login_page_url: nil,
16
- login_page_username_field_id: nil, login_page_password_field_id: nil,
17
- login_page_submit_button_id: nil,
18
- logout_button_id: nil,
16
+ login_page_username_field_selector: nil, login_page_password_field_selector: nil,
17
+ login_page_submit_button_selector: nil,
18
+ logout_button_selector: nil,
19
19
  logged_out_xpath: nil
20
20
  )
21
21
  @username, @password = username, password
22
22
  @login_page_url = login_page_url
23
- @login_page_username_field_id, @login_page_password_field_id = login_page_username_field_id, login_page_password_field_id
24
- @login_page_submit_button_id = login_page_submit_button_id
25
- @logout_button_id = logout_button_id
23
+ @login_page_username_field_selector, @login_page_password_field_selector = login_page_username_field_selector, login_page_password_field_selector
24
+ @login_page_submit_button_selector = login_page_submit_button_selector
25
+ @logout_button_selector = logout_button_selector
26
26
  @logged_out_xpath = logged_out_xpath
27
27
  end
28
28
 
@@ -38,13 +38,13 @@ class WebAccount
38
38
  login_page_submit_button.click
39
39
  end
40
40
  @logged_in = driver_wait.until do
41
- driver.element_present?(:id, @logout_button_id)
41
+ driver.element_present?(@logout_button_selector.keys.first, @logout_button_selector.values.first)
42
42
  end
43
43
  end
44
44
  alias_method :logon, :login
45
45
 
46
46
  def logout
47
- driver.find_element(:id, @logout_button_id).click
47
+ logout_button.click
48
48
  if logged_out?
49
49
  @logged_in = false
50
50
  end
@@ -98,8 +98,16 @@ class WebAccount
98
98
  username_field.send_keys(username)
99
99
  end
100
100
 
101
+ def default_username_field
102
+ {name: "username"}
103
+ end
104
+
101
105
  def username_field
102
- driver.find_element(:id, @login_page_username_field_id)
106
+ if @login_page_username_field_selector
107
+ driver.find_element(@login_page_username_field_selector.keys.first, @login_page_username_field_selector.values.first)
108
+ else
109
+ driver.find_element(default_username_field.keys.first, default_username_field.values.first)
110
+ end
103
111
  end
104
112
 
105
113
  def enter_password(password = nil)
@@ -107,12 +115,41 @@ class WebAccount
107
115
  password_field.send_keys(password)
108
116
  end
109
117
 
118
+ def default_password_field
119
+ {name: "password"}
120
+ end
121
+
110
122
  def password_field
111
- driver.find_element(:id, @login_page_password_field_id)
123
+ if @login_page_password_field_selector
124
+ driver.find_element(@login_page_password_field_selector.keys.first, @login_page_password_field_selector.values.first)
125
+ else
126
+ driver.find_element(default_password_field.keys.first, default_password_field.values.first)
127
+ end
128
+ end
129
+
130
+ def default_login_page_submit_button_selector
131
+ {xpath: '//input[@type="submit" and @value="Login"]'}
112
132
  end
113
133
 
114
134
  def login_page_submit_button
115
- driver.find_element(:id, @login_page_submit_button_id)
135
+ if @login_page_submit_button_selector
136
+ driver.find_element(@login_page_submit_button_selector.keys.first, @login_page_submit_button_selector.values.first)
137
+ else
138
+ driver.find_element(default_login_page_submit_button_selector.keys.first, default_login_page_submit_button_selector.values.first)
139
+ end
116
140
  end
117
141
 
142
+ # logging out
143
+
144
+ def default_logout_button_selector
145
+ {xpath: '//input[@type="submit" and @value="Logout"]'}
146
+ end
147
+
148
+ def logout_button
149
+ if @logout_page_submit_button_selector
150
+ driver.find_element(@logout_button_selector.keys.first, @logout_button_selector.values.first)
151
+ else
152
+ driver.find_element(default_logout_button_selector.keys.first, default_logout_button_selector.values.first)
153
+ end
154
+ end
118
155
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webaccount
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - thoran
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-19 00:00:00.000000000 Z
11
+ date: 2024-04-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: selenium-webdriver
@@ -24,19 +24,22 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
- description: Easily log into web accounts but just supplying a username and password,
28
- the URL of the login page, and a few page ids to a subclass of WebAccount.
27
+ description: Easily log into web accounts by supplying just a username and password,
28
+ the URL of the login page, and a few page ids to a sub-class of WebAccount.
29
29
  email: code@thoran.com
30
30
  executables: []
31
31
  extensions: []
32
32
  extra_rdoc_files: []
33
33
  files:
34
+ - lib/Thoran/Array/AllButFirst/all_but_first.rb
35
+ - lib/Thoran/Array/FirstX/firstX.rb
34
36
  - lib/Thoran/Selenium.rb
35
37
  - lib/Thoran/Selenium/WebDriver/Driver/Attempt/attempt.rb
36
38
  - lib/Thoran/Selenium/WebDriver/Remote/W3C/Bridge/ConvertLocators/convert_locators.rb
37
39
  - lib/Thoran/Selenium/WebDriver/SearchContext/ElementPresentQ/element_presentQ.rb
38
40
  - lib/Thoran/Selenium/WebDriver/SearchContext/ElementsPresentQ/elements_presentQ.rb
39
41
  - lib/Thoran/Selenium/WebDriver/Setup/setup.rb
42
+ - lib/Thoran/String/ToConst/to_const.rb
40
43
  - lib/WebAccount.rb
41
44
  - lib/WebAccount/VERSION.rb
42
45
  - lib/web_account.rb
@@ -44,7 +47,7 @@ homepage: http://github.com/thoran/WebAccount
44
47
  licenses:
45
48
  - Ruby
46
49
  metadata: {}
47
- post_install_message:
50
+ post_install_message:
48
51
  rdoc_options: []
49
52
  require_paths:
50
53
  - lib
@@ -59,9 +62,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
59
62
  - !ruby/object:Gem::Version
60
63
  version: '0'
61
64
  requirements: []
62
- rubygems_version: 3.1.2
63
- signing_key:
65
+ rubygems_version: 3.5.6
66
+ signing_key:
64
67
  specification_version: 4
65
- summary: "# Description: An abstract superclass for navigating a web-based user account
66
- via Selenium WebDriver."
68
+ summary: An abstract super-class for navigating a web-based user account via Selenium
69
+ WebDriver.
67
70
  test_files: []