webdrone 1.7.8 → 1.8.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.
data/lib/webdrone/clic.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Webdrone
2
4
  class Browser
3
5
  def clic
@@ -6,7 +8,7 @@ module Webdrone
6
8
  end
7
9
 
8
10
  class Clic
9
- attr_accessor :a0
11
+ attr_reader :a0
10
12
 
11
13
  def initialize(a0)
12
14
  @a0 = a0
@@ -24,8 +26,8 @@ module Webdrone
24
26
  else
25
27
  item.click
26
28
  end
27
- rescue => exception
28
- Webdrone.report_error(@a0, exception)
29
+ rescue StandardError => error
30
+ Webdrone.report_error(@a0, error)
29
31
  end
30
32
 
31
33
  alias_method :id, :clic
data/lib/webdrone/conf.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Webdrone
2
4
  class Browser
3
5
  def conf
@@ -6,33 +8,34 @@ module Webdrone
6
8
  end
7
9
 
8
10
  class Conf
9
- attr_accessor :a0, :timeout, :outdir, :error, :developer, :logger
11
+ attr_accessor :developer, :logger
12
+ attr_reader :a0, :timeout, :outdir, :error
10
13
 
11
14
  def initialize(a0)
12
15
  @a0 = a0
13
- @outdir = "."
16
+ @outdir = '.'
14
17
  @error = :raise_report
15
18
  end
16
19
 
17
20
  def timeout=(val)
18
21
  @timeout = val
19
22
  @a0.driver.manage.timeouts.implicit_wait = val
20
- rescue => exception
21
- Webdrone.report_error(@a0, exception)
23
+ rescue StandardError => error
24
+ Webdrone.report_error(@a0, error)
22
25
  end
23
26
 
24
27
  def outdir=(val)
25
28
  @outdir = val
26
29
  FileUtils.mkdir_p val
27
- rescue => exception
28
- Webdrone.report_error(@a0, exception)
30
+ rescue StandardError => error
31
+ Webdrone.report_error(@a0, error)
29
32
  end
30
33
 
31
34
  def error=(val)
32
- raise "Invalid value '#{val}' for error" if not [:raise_report, :raise, :ignore].include? val
35
+ raise "Invalid value '#{val}' for error" if !%i[raise_report raise ignore].include? val
33
36
  @error = val
34
- rescue => exception
35
- Webdrone.report_error(@a0, exception)
37
+ rescue StandardError => error
38
+ Webdrone.report_error(@a0, error)
36
39
  end
37
40
  end
38
41
  end
data/lib/webdrone/ctxt.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Webdrone
2
4
  class Browser
3
5
  def ctxt
@@ -6,29 +8,29 @@ module Webdrone
6
8
  end
7
9
 
8
10
  class Ctxt
9
- attr_accessor :a0, :current_frame
11
+ attr_reader :a0
10
12
 
11
13
  def initialize(a0)
12
14
  @a0 = a0
13
15
  @framestack = []
14
16
  end
15
-
17
+
16
18
  def create_tab
17
19
  @a0.exec.script "function a0_ctx_create_tab() { var w = window.open(); w.document.open(); w.document.write('A0 CTXT CREATE TAB'); w.document.close(); } a0_ctx_create_tab();"
18
20
  @a0.driver.switch_to.window @a0.driver.window_handles.last
19
- rescue => exception
20
- Webdrone.report_error(@a0, exception)
21
+ rescue StandardError => error
22
+ Webdrone.report_error(@a0, error)
21
23
  end
22
-
24
+
23
25
  def close_tab
24
26
  @a0.driver.close
25
27
  @a0.driver.switch_to.window @a0.driver.window_handles.last
26
- rescue => exception
27
- Webdrone.report_error(@a0, exception)
28
+ rescue StandardError => error
29
+ Webdrone.report_error(@a0, error)
28
30
  end
29
31
 
30
32
  def with_frame(name)
31
- @framestack << name
33
+ @framestack << name
32
34
  @a0.driver.switch_to.frame name
33
35
  if block_given?
34
36
  begin
@@ -36,33 +38,33 @@ module Webdrone
36
38
  ensure
37
39
  @framestack.pop
38
40
  @a0.driver.switch_to.default_content
39
- @framestack.each { |frame| @a0.driver.switch_to.frame frame}
41
+ @framestack.each { |frame| @a0.driver.switch_to.frame frame }
40
42
  end
41
43
  end
42
44
  name
43
- rescue => exception
44
- Webdrone.report_error(@a0, exception)
45
+ rescue StandardError => error
46
+ Webdrone.report_error(@a0, error)
45
47
  end
46
-
48
+
47
49
  def reset
48
50
  @a0.driver.switch_to.default_content
49
51
  @framestack = []
50
- rescue => exception
51
- Webdrone.report_error(@a0, exception)
52
+ rescue StandardError => error
53
+ Webdrone.report_error(@a0, error)
52
54
  end
53
-
55
+
54
56
  def with_alert
55
57
  @a0.wait.for do
56
58
  yield @a0.driver.switch_to.alert
57
59
  end
58
- rescue => exception
59
- Webdrone.report_error(@a0, exception)
60
+ rescue StandardError => error
61
+ Webdrone.report_error(@a0, error)
60
62
  end
61
63
 
62
64
  def ignore_alert
63
65
  @a0.exec.script 'alert = function(message){return true;};'
64
- rescue => exception
65
- Webdrone.report_error(@a0, exception)
66
+ rescue StandardError => error
67
+ Webdrone.report_error(@a0, error)
66
68
  end
67
69
 
68
70
  def with_conf(new_config)
@@ -74,8 +76,8 @@ module Webdrone
74
76
  end
75
77
 
76
78
  yield
77
- rescue => exception
78
- Webdrone.report_error(@a0, exception)
79
+ rescue StandardError => error
80
+ Webdrone.report_error(@a0, error)
79
81
  ensure
80
82
  current_config.each do |k, v|
81
83
  @a0.conf.send "#{k}=", v
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Webdrone
2
4
  class WebdroneError < RuntimeError
3
5
  attr_reader :original, :a0, :binding
4
6
 
5
- def initialize(msg, original = $!, a0, bindings)
7
+ def initialize(msg, original, a0, bindings)
6
8
  super(msg)
7
- @original = original
9
+ @original = original || $!
8
10
  @a0 = a0
9
11
  @buffer = []
10
12
  @binding = nil
@@ -12,17 +14,18 @@ module Webdrone
12
14
 
13
15
  begin
14
16
  # find location of user error
15
- bindings[0..-1].each_with_index do |binding, index|
17
+ bindings[0..-1].each do |binding|
16
18
  location = { path: binding.eval('__FILE__'), lineno: binding.eval('__LINE__') }
17
- if Gem.path.none? { |path| location[:path].include? path }
18
- @location = location
19
- @binding = binding
20
- break
21
- end
19
+ next unless Gem.path.none? { |path| location[:path].include? path }
20
+
21
+ @location = location
22
+ @binding = binding
23
+ break
22
24
  end
23
25
 
24
26
  report if a0.conf.error == :raise_report
25
- rescue
27
+ rescue StandardError
28
+ nil
26
29
  end
27
30
  end
28
31
 
@@ -33,11 +36,12 @@ module Webdrone
33
36
  end
34
37
 
35
38
  def write_title(title)
36
- title = "#{title} " if title.length % 2 != 0
39
+ title = "#{title} " if title.length.odd?
37
40
  title = "== #{title} =="
38
41
  filler = "="
39
42
  length = (80 - title.length) / 2
40
- title = "#{filler*length}#{title}#{filler*length}\n" if length > 1
43
+ filler_length = filler * length
44
+ title = "#{filler_length}#{title}#{filler_length}\n" if length > 1
41
45
  write_line title
42
46
  end
43
47
 
@@ -57,61 +61,58 @@ module Webdrone
57
61
  end
58
62
 
59
63
  def report_script
60
- begin
61
- ini, fin = [@location[:lineno] - 10 - 1, @location[:lineno] + 10 - 1]
62
- ini = 0 if ini < 0
63
-
64
- write_title "LOCATION OF ERROR"
65
- write_line "#{@location[:path]} AT LINE #{sprintf '%3d', @location[:lineno]}"
66
- File.readlines(@location[:path])[ini..fin].each_with_index do |line, index|
67
- lno = index + ini + 1
68
- if lno == @location[:lineno]
69
- write_line sprintf "%3d ==> %s", lno, line
70
- else
71
- write_line sprintf "%3d %s", lno, line
72
- end
64
+ ini, fin = [@location[:lineno] - 10 - 1, @location[:lineno] + 10 - 1]
65
+ ini = 0 if ini.negative?
66
+
67
+ write_title "LOCATION OF ERROR"
68
+ write_line "#{@location[:path]} AT LINE #{sprintf '%3d', @location[:lineno]}"
69
+ File.readlines(@location[:path])[ini..fin].each_with_index do |line, index|
70
+ lno = index + ini + 1
71
+ if lno == @location[:lineno]
72
+ write_line sprintf "%3d ==> #{line}", lno
73
+ else
74
+ write_line sprintf "%3d #{line}", lno
73
75
  end
74
-
75
- dump_error_report
76
- rescue
77
76
  end
77
+
78
+ dump_error_report
79
+ rescue StandardError
80
+ nil
78
81
  end
79
82
 
80
83
  def report_screenshot
84
+ write_title "AUTOMATIC SCREENSHOT"
81
85
  begin
82
- write_title "AUTOMATIC SCREENSHOT"
83
- begin
84
- @a0.ctxt.with_conf error: :raise do
85
- file = @a0.shot.screen 'a0_webdrone_error_report'
86
- write_line "Screenshot saved succesfully filename:"
87
- write_line "#{File.expand_path(file.path)}"
88
- end
89
- rescue => exception
90
- write_line "Error Saving screenshot, exception:"
91
- write_line "#{exception}"
86
+ @a0.ctxt.with_conf error: :raise do
87
+ file = @a0.shot.screen 'a0_webdrone_error_report'
88
+ write_line "Screenshot saved succesfully filename:"
89
+ write_line File.expand_path(file.path).to_s
92
90
  end
93
-
94
- dump_error_report
95
- rescue
91
+ rescue StandardError => error
92
+ write_line "Error Saving screenshot, exception:"
93
+ write_line error.to_s
96
94
  end
95
+
96
+ dump_error_report
97
+ rescue StandardError
98
+ nil
97
99
  end
98
100
 
99
101
  def report_exception
100
- begin
101
- write_title "EXCEPTION DUMP"
102
-
103
- write_line "#{@original.class}: #{@original.message}"
104
- @original.backtrace_locations.each_with_index do |location, index|
105
- if location.path == @location[:path] and location.lineno == @location[:lineno]
106
- write_line sprintf "%02d: ==> from %s", index, location
107
- else
108
- write_line sprintf "%02d: from %s", index, location
109
- end
102
+ write_title "EXCEPTION DUMP"
103
+
104
+ write_line "#{@original.class}: #{@original.message}"
105
+ @original.backtrace_locations.each_with_index do |location, index|
106
+ if location.path == @location[:path] && location.lineno == @location[:lineno]
107
+ write_line sprintf "%02d: ==> from #{location}", index
108
+ else
109
+ write_line sprintf "%02d: from #{location}", index
110
110
  end
111
-
112
- dump_error_report
113
- rescue
114
111
  end
112
+
113
+ dump_error_report
114
+ rescue StandardError
115
+ nil
115
116
  end
116
117
 
117
118
  def report_os
@@ -124,7 +125,7 @@ module Webdrone
124
125
  end
125
126
 
126
127
  def report_time
127
- write_title "#{Time.new}"
128
+ write_title Time.new.to_s
128
129
 
129
130
  dump_error_report
130
131
  end
@@ -134,13 +135,13 @@ module Webdrone
134
135
  return if a0.conf.error == :ignore
135
136
  if exception.class != WebdroneError
136
137
  exception = WebdroneError.new(exception.message, exception, a0, Kernel.binding.callers)
137
- if a0.conf.developer and exception.binding
138
+ if a0.conf.developer && exception.binding
138
139
  exception.write_title "STARTING DEVELOPER CONSOLE ON ERROR"
139
140
  exception.dump_error_report
140
141
  a0.console exception.binding
141
142
  end
142
143
  end
143
144
 
144
- raise exception if a0.conf.error == :raise or a0.conf.error == :raise_report
145
+ raise exception if %i[raise raise_report].include? a0.conf.error
145
146
  end
146
147
  end
data/lib/webdrone/exec.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Webdrone
2
4
  class Browser
3
5
  def exec
@@ -6,7 +8,7 @@ module Webdrone
6
8
  end
7
9
 
8
10
  class Exec
9
- attr_accessor :a0
11
+ attr_reader :a0
10
12
 
11
13
  def initialize(a0)
12
14
  @a0 = a0
@@ -14,8 +16,8 @@ module Webdrone
14
16
 
15
17
  def script(script, *more)
16
18
  @a0.driver.execute_script(script, *more)
17
- rescue => exception
18
- Webdrone.report_error(@a0, exception)
19
+ rescue StandardError => error
20
+ Webdrone.report_error(@a0, error)
19
21
  end
20
22
  end
21
23
  end
data/lib/webdrone/find.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Webdrone
2
4
  class Browser
3
5
  def find
@@ -6,7 +8,7 @@ module Webdrone
6
8
  end
7
9
 
8
10
  class Find
9
- attr_accessor :a0
11
+ attr_reader :a0
10
12
 
11
13
  def initialize(a0)
12
14
  @a0 = a0
@@ -17,8 +19,8 @@ module Webdrone
17
19
  items = (parent || @a0.driver).find_elements :id, text
18
20
  choose(items, n, all, visible, scroll)
19
21
  end
20
- rescue => exception
21
- Webdrone.report_error(@a0, exception)
22
+ rescue StandardError => error
23
+ Webdrone.report_error(@a0, error)
22
24
  end
23
25
 
24
26
  def css(text, n: 1, all: false, visible: true, scroll: false, parent: nil)
@@ -26,32 +28,32 @@ module Webdrone
26
28
  items = (parent || @a0.driver).find_elements :css, text
27
29
  choose(items, n, all, visible, scroll)
28
30
  end
29
- rescue => exception
30
- Webdrone.report_error(@a0, exception)
31
+ rescue StandardError => error
32
+ Webdrone.report_error(@a0, error)
31
33
  end
32
34
 
33
35
  def link(text, n: 1, all: false, visible: true, scroll: false, parent: nil)
34
- self.xpath XPath::HTML.link(text).to_s, n: n, all: all, visible: visible, scroll: scroll, parent: parent
35
- rescue => exception
36
- Webdrone.report_error(@a0, exception)
36
+ xpath Webdrone::XPath.link(text).to_s, n: n, all: all, visible: visible, scroll: scroll, parent: parent
37
+ rescue StandardError => error
38
+ Webdrone.report_error(@a0, error)
37
39
  end
38
40
 
39
41
  def button(text, n: 1, all: false, visible: true, scroll: false, parent: nil)
40
- self.xpath XPath::HTML.button(text).to_s, n: n, all: all, visible: visible, scroll: scroll, parent: parent
41
- rescue => exception
42
- Webdrone.report_error(@a0, exception)
42
+ xpath Webdrone::XPath.button(text).to_s, n: n, all: all, visible: visible, scroll: scroll, parent: parent
43
+ rescue StandardError => error
44
+ Webdrone.report_error(@a0, error)
43
45
  end
44
46
 
45
47
  def on(text, n: 1, all: false, visible: true, scroll: false, parent: nil)
46
- self.xpath XPath::HTML.link_or_button(text).to_s, n: n, all: all, visible: visible, scroll: scroll, parent: parent
47
- rescue => exception
48
- Webdrone.report_error(@a0, exception)
48
+ xpath Webdrone::XPath.link_or_button(text).to_s, n: n, all: all, visible: visible, scroll: scroll, parent: parent
49
+ rescue StandardError => error
50
+ Webdrone.report_error(@a0, error)
49
51
  end
50
52
 
51
53
  def option(text, n: 1, all: false, visible: true, scroll: false, parent: nil)
52
- self.xpath XPath::HTML.option(text).to_s, n: n, all: all, visible: visible, scroll: scroll, parent: parent
53
- rescue => exception
54
- Webdrone.report_error(@a0, exception)
54
+ xpath Webdrone::XPath.option(text).to_s, n: n, all: all, visible: visible, scroll: scroll, parent: parent
55
+ rescue StandardError => error
56
+ Webdrone.report_error(@a0, error)
55
57
  end
56
58
 
57
59
  def xpath(text, n: 1, all: false, visible: true, scroll: false, parent: nil)
@@ -59,31 +61,32 @@ module Webdrone
59
61
  items = (parent || @a0.driver).find_elements :xpath, text
60
62
  choose(items, n, all, visible, scroll)
61
63
  end
62
- rescue => exception
63
- Webdrone.report_error(@a0, exception)
64
+ rescue StandardError => error
65
+ Webdrone.report_error(@a0, error)
64
66
  end
65
67
 
66
68
  protected
67
- def choose(list, n, all, visible, scroll)
68
- list = list.select do |x|
69
- if visible == true
70
- x.displayed?
71
- elsif visible == false
72
- not x.displayed?
73
- else
74
- true
75
- end
76
- end
77
69
 
78
- if scroll and list.length > 0
79
- @a0.exec.script 'arguments[0].scrollIntoView()', list.first
80
- end
81
-
82
- if all
83
- list
70
+ def choose(list, n, all, visible, scroll)
71
+ list = list.select do |x|
72
+ if visible == true
73
+ x.displayed?
74
+ elsif visible == false
75
+ !x.displayed?
84
76
  else
85
- list[n - 1]
77
+ true
86
78
  end
87
79
  end
80
+
81
+ if scroll && list.length.positive?
82
+ @a0.exec.script 'arguments[0].scrollIntoView()', list.first
83
+ end
84
+
85
+ if all
86
+ list
87
+ else
88
+ list[n - 1]
89
+ end
90
+ end
88
91
  end
89
92
  end