locatine 0.02651 → 0.02653
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 +4 -4
- data/README.md +3 -3
- data/lib/locatine/daemon.rb +0 -2
- data/lib/locatine/logger.rb +62 -0
- data/lib/locatine/results.rb +1 -8
- data/lib/locatine/results_helpers/guess.rb +26 -0
- data/lib/locatine/session.rb +1 -5
- data/lib/locatine/version.rb +1 -1
- data/lib/locatine.rb +10 -0
- metadata +3 -3
- data/lib/locatine/results_helpers/logger.rb +0 -64
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d99cd5d5712f3b8c2e5ee842d747cabe50389989ae74ee3cfa2e7c7c053459bb
|
|
4
|
+
data.tar.gz: 5887791f4997688df39acfab6d5bb9e15827e77b970643a9e6fd63afa9947e57
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: fbd537352c05d38f9b4a2f8ebaee26c1e83d787071593caaa1a72bce8be60c41b36c2d869923d633bfb3851e26497b63f453c15e69fac4725986d8207cea03a7
|
|
7
|
+
data.tar.gz: 11f6d7403fb9eed905255a1c4d1eee477a2ea220d867d0a4d7ce09a9a0b50b081daf59f21cb92dbffcbe4dd4e31ca76ef01e3234e66353ee203a1007b8cc4685
|
data/README.md
CHANGED
|
@@ -14,7 +14,7 @@ That's it.
|
|
|
14
14
|
|
|
15
15
|
## Stage of development:
|
|
16
16
|
|
|
17
|
-
Version of Locatine is **0.
|
|
17
|
+
Version of Locatine is **0.02653**. This is the 1st version since redesign. Next 5-15 versions will be about bug fixing and minor tweaks.
|
|
18
18
|
|
|
19
19
|
## Attention
|
|
20
20
|
|
|
@@ -80,7 +80,7 @@ driver = Selenium::WebDriver.
|
|
|
80
80
|
|
|
81
81
|
This way is recommended because of the simplicity.
|
|
82
82
|
|
|
83
|
-
Another way is to set options after the session was created by making [POST request to '/locatine/session/%session_id%'](https://github.com/sseleznevqa/locatine#post-to-
|
|
83
|
+
Another way is to set options after the session was created by making [POST request to '/locatine/session/%session_id%'](https://github.com/sseleznevqa/locatine#post-to-wdhubsession)
|
|
84
84
|
|
|
85
85
|
## Settings to pass
|
|
86
86
|
|
|
@@ -329,7 +329,7 @@ For more information about locators read about [locator strategies](https://www.
|
|
|
329
329
|
|
|
330
330
|
Locatine also provides its own locator strategy == 'locatine'. In order to use it you need to inject it to the code of selenium-webdriver implementation.
|
|
331
331
|
|
|
332
|
-
See it's done for ruby [here](https://github.com/sseleznevqa/locatine/tree/master/spec/e2e_spec.rb#
|
|
332
|
+
See it's done for ruby [here](https://github.com/sseleznevqa/locatine/tree/master/spec/e2e_spec.rb#L5-L11)
|
|
333
333
|
|
|
334
334
|
When it's done you can use:
|
|
335
335
|
|
data/lib/locatine/daemon.rb
CHANGED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'colorize'
|
|
4
|
+
|
|
5
|
+
module Locatine
|
|
6
|
+
#
|
|
7
|
+
# Methods for sending lines to STDOUT
|
|
8
|
+
module Logger
|
|
9
|
+
def warn(text)
|
|
10
|
+
puts "WARNING: #{Time.now}: ".yellow + text
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def log(text)
|
|
14
|
+
puts "MESSAGE: #{Time.now}: ".magenta + text
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def locatine_error(text)
|
|
18
|
+
puts "ERROR: #{Time.now}: ".red + text.red
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def warn_locator
|
|
22
|
+
warn("Locator is broken. For #{name} by"\
|
|
23
|
+
" #{@locator['using']}>>>'#{locator['value']}'")
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def warn_guess
|
|
27
|
+
warn("Locatine is trying to guess what is #{@name}")
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def log_start
|
|
31
|
+
log "#{Time.now}: Locatine is working on #{@name}"
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def warn_magic
|
|
35
|
+
warn "Locatine cannot find element #{@name} by usual methods and "\
|
|
36
|
+
'starting to look for some element that is similar. Retrived '\
|
|
37
|
+
'element may be not the one that is desired from this point'
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def warn_lost
|
|
41
|
+
warn "Locatine found nothing for #{@name}"
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def warn_unstable_page
|
|
45
|
+
warn 'Locatine detected stale element error. It means some elements'\
|
|
46
|
+
' found by locatine are not attached to DOM anymore.'\
|
|
47
|
+
' Page is unstable. Starting searching process again'
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def log_found
|
|
51
|
+
log "Locatine found something as #{@name}"
|
|
52
|
+
log "XPATH == #{generate_xpath(raw_info)}"
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def raise_script_error(script, args, answer)
|
|
56
|
+
locatine_error 'Locatine faced an error while trying to perform '\
|
|
57
|
+
"js script.\n ---Script was: #{script}\n\n ---Arguments was: #{args}"\
|
|
58
|
+
"\n\n ---Answer was: #{answer}"
|
|
59
|
+
raise answer['error']
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
data/lib/locatine/results.rb
CHANGED
|
@@ -1,12 +1,5 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require 'locatine/results_helpers/info_generator'
|
|
4
|
-
require 'locatine/results_helpers/xpath_generator'
|
|
5
|
-
require 'locatine/results_helpers/find_by_magic'
|
|
6
|
-
require 'locatine/results_helpers/common'
|
|
7
|
-
require 'locatine/results_helpers/logger'
|
|
8
|
-
require 'locatine/results_helpers/guess'
|
|
9
|
-
|
|
10
3
|
module Locatine
|
|
11
4
|
#
|
|
12
5
|
# Locatine results container
|
|
@@ -15,7 +8,7 @@ module Locatine
|
|
|
15
8
|
include Locatine::ResultsHelpers::XpathGenerator
|
|
16
9
|
include Locatine::ResultsHelpers::FindByMagic
|
|
17
10
|
include Locatine::ResultsHelpers::Common
|
|
18
|
-
include Locatine::
|
|
11
|
+
include Locatine::Logger
|
|
19
12
|
include Locatine::ResultsHelpers::Guess
|
|
20
13
|
|
|
21
14
|
attr_accessor :name, :config, :locator
|
|
@@ -40,6 +40,32 @@ module Locatine
|
|
|
40
40
|
end
|
|
41
41
|
answer
|
|
42
42
|
end
|
|
43
|
+
|
|
44
|
+
def count_similarity
|
|
45
|
+
all = 0
|
|
46
|
+
same = 0
|
|
47
|
+
# Next is necessary for unknown reason (smthing thread related)
|
|
48
|
+
raw = raw_info['0']
|
|
49
|
+
get_trusted(known['0']).each do |hash|
|
|
50
|
+
caught = (raw.select { |item| info_hash_eq(item, hash) }).first
|
|
51
|
+
all += 1
|
|
52
|
+
same += 1 if caught
|
|
53
|
+
end
|
|
54
|
+
similar_enough(same, all)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def similar?
|
|
58
|
+
return false if empty?
|
|
59
|
+
|
|
60
|
+
return true if tolerance == 100
|
|
61
|
+
|
|
62
|
+
count_similarity
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def similar_enough(same, all)
|
|
66
|
+
sameness = (same * 100) / all
|
|
67
|
+
sameness >= 100 - tolerance
|
|
68
|
+
end
|
|
43
69
|
end
|
|
44
70
|
end
|
|
45
71
|
end
|
data/lib/locatine/session.rb
CHANGED
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require 'locatine/results'
|
|
4
|
-
require 'locatine/element'
|
|
5
|
-
require 'locatine/results_helpers/logger'
|
|
6
|
-
|
|
7
3
|
module Locatine
|
|
8
4
|
#
|
|
9
5
|
# Locatine session operator finds and returns
|
|
10
6
|
class Session
|
|
11
|
-
include Locatine::
|
|
7
|
+
include Locatine::Logger
|
|
12
8
|
attr_accessor :json, :depth, :trusted, :untrusted, :tolerance, :stability,
|
|
13
9
|
:elements, :timeout
|
|
14
10
|
|
data/lib/locatine/version.rb
CHANGED
data/lib/locatine.rb
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require 'locatine/daemon_helpers/methods'
|
|
4
|
+
require 'locatine/results_helpers/common'
|
|
5
|
+
require 'locatine/results_helpers/find_by_magic'
|
|
6
|
+
require 'locatine/results_helpers/guess'
|
|
7
|
+
require 'locatine/results_helpers/info_generator'
|
|
8
|
+
require 'locatine/results_helpers/xpath_generator'
|
|
9
|
+
|
|
10
|
+
require 'locatine/logger'
|
|
3
11
|
require 'locatine/version'
|
|
4
12
|
require 'locatine/daemon'
|
|
5
13
|
require 'locatine/session'
|
|
14
|
+
require 'locatine/element'
|
|
15
|
+
require 'locatine/results'
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: locatine
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: '0.
|
|
4
|
+
version: '0.02653'
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Sergei Seleznev
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-03-
|
|
11
|
+
date: 2020-03-02 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -141,12 +141,12 @@ files:
|
|
|
141
141
|
- lib/locatine/daemon.rb
|
|
142
142
|
- lib/locatine/daemon_helpers/methods.rb
|
|
143
143
|
- lib/locatine/element.rb
|
|
144
|
+
- lib/locatine/logger.rb
|
|
144
145
|
- lib/locatine/results.rb
|
|
145
146
|
- lib/locatine/results_helpers/common.rb
|
|
146
147
|
- lib/locatine/results_helpers/find_by_magic.rb
|
|
147
148
|
- lib/locatine/results_helpers/guess.rb
|
|
148
149
|
- lib/locatine/results_helpers/info_generator.rb
|
|
149
|
-
- lib/locatine/results_helpers/logger.rb
|
|
150
150
|
- lib/locatine/results_helpers/xpath_generator.rb
|
|
151
151
|
- lib/locatine/scripts/element.js
|
|
152
152
|
- lib/locatine/scripts/page.js
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'colorize'
|
|
4
|
-
|
|
5
|
-
module Locatine
|
|
6
|
-
module ResultsHelpers
|
|
7
|
-
#
|
|
8
|
-
# Methods for sending lines to STDOUT
|
|
9
|
-
module Logger
|
|
10
|
-
def warn(text)
|
|
11
|
-
puts "WARNING: #{Time.now}: ".yellow + text
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def log(text)
|
|
15
|
-
puts "MESSAGE: #{Time.now}: ".magenta + text
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def locatine_error(text)
|
|
19
|
-
puts "ERROR: #{Time.now}: ".red + text.red
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def warn_locator
|
|
23
|
-
warn("Locator is broken. For #{name} by"\
|
|
24
|
-
" #{@locator['using']}>>>'#{locator['value']}'")
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def warn_guess
|
|
28
|
-
warn("Locatine is trying to guess what is #{@name}")
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def log_start
|
|
32
|
-
log "#{Time.now}: Locatine is working on #{@name}"
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def warn_magic
|
|
36
|
-
warn "Locatine cannot find element #{@name} by usual methods and "\
|
|
37
|
-
'starting to look for some element that is similar. Retrived '\
|
|
38
|
-
'element may be not the one that is desired from this point'
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def warn_lost
|
|
42
|
-
warn "Locatine found nothing for #{@name}"
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def warn_unstable_page
|
|
46
|
-
warn 'Locatine detected stale element error. It means some elements'\
|
|
47
|
-
' found by locatine are not attached to DOM anymore.'\
|
|
48
|
-
' Page is unstable. Starting searching process again'
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def log_found
|
|
52
|
-
log "Locatine found something as #{@name}"
|
|
53
|
-
log "XPATH == #{generate_xpath(raw_info)}"
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def raise_script_error(script, args, answer)
|
|
57
|
-
locatine_error 'Locatine faced an error while trying to perform '\
|
|
58
|
-
"js script.\n ---Script was: #{script}\n\n ---Arguments was: #{args}"\
|
|
59
|
-
"\n\n ---Answer was: #{answer}"
|
|
60
|
-
raise answer['error']
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
end
|