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/form.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Webdrone
2
4
  class Browser
3
5
  def form
@@ -6,7 +8,8 @@ module Webdrone
6
8
  end
7
9
 
8
10
  class Form
9
- attr_accessor :a0, :data
11
+ attr_accessor :data
12
+ attr_reader :a0
10
13
 
11
14
  def initialize(a0)
12
15
  @a0 = a0
@@ -15,9 +18,9 @@ module Webdrone
15
18
 
16
19
  def with_xpath(xpath = nil, &block)
17
20
  old_xpath, @xpath = @xpath, xpath
18
- instance_eval &block
19
- rescue => exception
20
- Webdrone.report_error(@a0, exception)
21
+ instance_eval(&block)
22
+ rescue StandardError => error
23
+ Webdrone.report_error(@a0, error)
21
24
  ensure
22
25
  @xpath = old_xpath
23
26
  end
@@ -29,15 +32,15 @@ module Webdrone
29
32
 
30
33
  yield
31
34
  ensure
32
- File.open(".#{filename}.lock", File::RDWR | File::CREAT, 0644) do |file|
35
+ File.open(".#{filename}.lock", File::RDWR | File::CREAT, 0o644) do
33
36
  items = {}
34
37
  items[item] = data
35
38
 
36
39
  begin
37
40
  workbook = RubyXL::Parser.parse(filename)
38
41
  worksheet = workbook[sheet]
39
- worksheet = workbook.add_worksheet sheet unless worksheet
40
- rescue
42
+ worksheet ||= workbook.add_worksheet sheet
43
+ rescue StandardError
41
44
  workbook = RubyXL::Workbook.new
42
45
  worksheet = workbook[0]
43
46
  worksheet.sheet_name = sheet
@@ -45,7 +48,7 @@ module Webdrone
45
48
 
46
49
  rows = worksheet.sheet_data.rows.collect do |row|
47
50
  row.cells.collect do |cell|
48
- cell.value if cell != nil
51
+ cell&.value
49
52
  end
50
53
  end
51
54
  heads = rows.shift || []
@@ -54,11 +57,11 @@ module Webdrone
54
57
  key = nil
55
58
  row.each_with_index do |val, i|
56
59
  val = val.to_s if val
57
- if i == 0
60
+ if i.zero?
58
61
  key = val
59
62
  elsif key
60
63
  items[key] = {} unless items[key]
61
- items[key][heads[i]] = val if heads[i] != nil and items[key][heads[i]] == nil
64
+ items[key][heads[i]] = val if !heads[i].nil? && items[key][heads[i]].nil?
62
65
  end
63
66
  end
64
67
  end
@@ -88,10 +91,10 @@ module Webdrone
88
91
  end
89
92
 
90
93
  def set(key, val, n: 1, visible: true, scroll: false, parent: nil, mark: false)
91
- item = self.find_item(key, n: n, visible: visible, scroll: scroll, parent: parent)
94
+ item = find_item(key, n: n, visible: visible, scroll: scroll, parent: parent)
92
95
  @a0.mark.mark_item item if mark
93
96
  if item.tag_name == 'select'
94
- option = item.find_element :xpath, XPath::HTML.option(val).to_s
97
+ option = item.find_element :xpath, Webdrone::XPath.option(val).to_s
95
98
  option.click
96
99
  else
97
100
  item.clear
@@ -99,56 +102,59 @@ module Webdrone
99
102
  end
100
103
  @data[key] = val if @data
101
104
  nil
102
- rescue => exception
103
- Webdrone.report_error(@a0, exception)
105
+ rescue StandardError => error
106
+ Webdrone.report_error(@a0, error)
104
107
  end
105
108
 
106
109
  def get(key, n: 1, visible: true, scroll: false, parent: nil, mark: false)
107
- item = self.find_item(key, n: n, visible: visible, scroll: scroll, parent: parent)
110
+ item = find_item(key, n: n, visible: visible, scroll: scroll, parent: parent)
108
111
  @a0.mark.mark_item item if mark
109
112
  item[:value]
110
- rescue => exception
111
- Webdrone.report_error(@a0, exception)
113
+ rescue StandardError => error
114
+ Webdrone.report_error(@a0, error)
112
115
  end
113
116
 
114
117
  def clic(key, n: 1, visible: true, scroll: false, parent: nil, mark: false)
115
- item = self.find_item(key, n: n, visible: visible, scroll: scroll, parent: parent)
118
+ item = find_item(key, n: n, visible: visible, scroll: scroll, parent: parent)
116
119
  @a0.mark.mark_item item if mark
117
120
  item.click
118
- rescue => exception
119
- Webdrone.report_error(@a0, exception)
121
+ rescue StandardError => error
122
+ Webdrone.report_error(@a0, error)
120
123
  end
121
124
 
122
125
  def mark(key, n: 1, visible: true, scroll: false, parent: nil, color: '#af1616', times: nil, delay: nil, shot: nil)
123
- @a0.mark.mark_item self.find_item(key, n: n, visible: visible, scroll: scroll, parent: parent), color: color, times: times, delay: delay, shot: shot
124
- rescue => exception
125
- Webdrone.report_error(@a0, exception)
126
+ @a0.mark.mark_item find_item(key, n: n, visible: visible, scroll: scroll, parent: parent), color: color, times: times, delay: delay, shot: shot
127
+ rescue StandardError => error
128
+ Webdrone.report_error(@a0, error)
126
129
  end
127
130
 
128
131
  def submit(key = nil, n: 1, visible: true, scroll: false, parent: nil, mark: false)
129
- self.find_item(key, n: n, visible: visible, scroll: scroll, parent: parent) if key
132
+ item = find_item(key, n: n, visible: visible, scroll: scroll, parent: parent) if key
133
+ @a0.mark.mark_item item if mark
130
134
  @lastitem.submit
131
- rescue => exception
132
- Webdrone.report_error(@a0, exception)
135
+ rescue StandardError => error
136
+ Webdrone.report_error(@a0, error)
133
137
  end
134
138
 
135
139
  def xlsx(sheet: nil, filename: nil)
136
140
  @a0.xlsx.dict(sheet: sheet, filename: filename).each do |k, v|
137
- self.set k, v
141
+ set k, v
138
142
  end
139
- rescue => exception
140
- Webdrone.report_error(@a0, exception)
143
+ rescue StandardError => error
144
+ Webdrone.report_error(@a0, error)
141
145
  end
142
146
 
143
147
  protected
144
- def find_item(key, n: 1, visible: true, scroll: false, parent: nil)
148
+
149
+ def find_item(key, n: 1, visible: true, scroll: false, parent: nil)
150
+ @lastitem = \
145
151
  if @xpath.respond_to? :call
146
- @lastitem = @a0.find.xpath @xpath.call(key).to_s, n: n, visible: visible, scroll: scroll, parent: parent
147
- elsif @xpath.is_a? String and @xpath.include? '%s'
148
- @lastitem = @a0.find.xpath sprintf(@xpath, key), n: n, visible: visible, scroll: scroll, parent: parent
152
+ @a0.find.xpath @xpath.call(key).to_s, n: n, visible: visible, scroll: scroll, parent: parent
153
+ elsif @xpath.is_a?(String) && @xpath.include?('%s')
154
+ @a0.find.xpath sprintf(@xpath, key), n: n, visible: visible, scroll: scroll, parent: parent
149
155
  else
150
- @lastitem = @a0.find.xpath XPath::HTML.field(key).to_s, n: n, visible: visible, scroll: scroll, parent: parent
156
+ @a0.find.xpath Webdrone::XPath.field(key).to_s, n: n, visible: visible, scroll: scroll, parent: parent
151
157
  end
152
- end
158
+ end
153
159
  end
154
160
  end
data/lib/webdrone/html.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Webdrone
2
4
  class Browser
3
5
  def html
@@ -6,7 +8,7 @@ module Webdrone
6
8
  end
7
9
 
8
10
  class Html
9
- attr_accessor :a0
11
+ attr_reader :a0
10
12
 
11
13
  def initialize(a0)
12
14
  @a0 = a0
@@ -15,12 +17,12 @@ module Webdrone
15
17
  def find_html(text, n: 1, all: false, visible: true, scroll: false, parent: nil)
16
18
  item = @a0.find.send __callee__, text, n: n, all: all, visible: visible, scroll: scroll, parent: parent
17
19
  if item.is_a? Array
18
- item.collect { |x| x.attribute 'innerHTML'}
20
+ item.collect { |x| x.attribute 'innerHTML' }
19
21
  else
20
22
  item.attribute 'innerHTML'
21
23
  end
22
- rescue => exception
23
- Webdrone.report_error(@a0, exception)
24
+ rescue StandardError => error
25
+ Webdrone.report_error(@a0, error)
24
26
  end
25
27
 
26
28
  alias_method :id, :find_html
data/lib/webdrone/logg.rb CHANGED
@@ -1,12 +1,18 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Webdrone
2
4
  class MethodLogger < Module
3
- def initialize(methods_0 = nil)
4
- @methods_0 = methods_0
5
+ class << self
6
+ attr_accessor :last_time, :screenshot
7
+ end
8
+
9
+ def initialize(methods = nil)
10
+ @methods = methods
5
11
  end
6
12
 
7
13
  def included(base)
8
- @methods_0 = base.instance_methods(false) if @methods_0 == nil
9
- method_list = @methods_0
14
+ @methods ||= base.instance_methods(false)
15
+ method_list = @methods
10
16
  base.class_eval do
11
17
  method_list.each do |method_name|
12
18
  original_method = instance_method(method_name)
@@ -14,18 +20,17 @@ module Webdrone
14
20
  caller_location = Kernel.caller_locations[0]
15
21
  cl_path = caller_location.path
16
22
  cl_line = caller_location.lineno
17
- if @a0.conf.logger and Gem.path.none? { |path| cl_path.include? path }
18
- $a0_webdrone_logger_last_time = Time.new unless $a0_webdrone_logger_last_time
19
- ini = $a0_webdrone_logger_last_time
20
- $a0_webdrone_screenshot = nil
23
+ if @a0.conf.logger && Gem.path.none? { |path| cl_path.include? path }
24
+ ini = ::Webdrone::MethodLogger.last_time ||= Time.new
25
+ ::Webdrone::MethodLogger.screenshot = nil
21
26
  begin
22
27
  result = original_method.bind(self).call(*args, &block)
23
- fin = $a0_webdrone_logger_last_time = Time.new
24
- @a0.logs.trace(ini, fin, cl_path, cl_line, base, method_name, args, result, nil, $a0_webdrone_screenshot)
28
+ fin = ::Webdrone::MethodLogger.last_time = Time.new
29
+ @a0.logs.trace(ini, fin, cl_path, cl_line, base, method_name, args, result, nil, ::Webdrone::MethodLogger.screenshot)
25
30
  result
26
- rescue => exception
27
- fin = $a0_webdrone_logger_last_time = Time.new
28
- @a0.logs.trace(ini, fin, cl_path, cl_line, base, method_name, args, nil, exception, $a0_webdrone_screenshot)
31
+ rescue StandardError => exception
32
+ fin = ::Webdrone::MethodLogger.last_time = Time.new
33
+ @a0.logs.trace(ini, fin, cl_path, cl_line, base, method_name, args, nil, exception, ::Webdrone::MethodLogger.screenshot)
29
34
  raise exception
30
35
  end
31
36
  else
@@ -44,7 +49,7 @@ module Webdrone
44
49
  end
45
50
 
46
51
  class Logs
47
- attr_accessor :a0
52
+ attr_reader :a0
48
53
 
49
54
  def initialize(a0)
50
55
  @a0 = a0
@@ -55,9 +60,9 @@ module Webdrone
55
60
 
56
61
  def trace(ini, fin, from, lineno, base, method_name, args, result, exception, screenshot)
57
62
  exception = "#{exception.class}: #{exception}" if exception
58
- printf @format, (fin-ini), base, method_name, args, (result || exception)
63
+ printf @format, (fin - ini), base, method_name, args, (result || exception)
59
64
  CSV.open(@path, "a+") do |csv|
60
- csv << [ini.strftime('%Y-%m-%d %H:%M:%S.%L %z'), (fin-ini), from, lineno, base, method_name, args, result, exception, screenshot]
65
+ csv << [ini.strftime('%Y-%m-%d %H:%M:%S.%L %z'), (fin - ini), from, lineno, base, method_name, args, result, exception, screenshot]
61
66
  end
62
67
  @group_trace_count = @group_trace_count.map { |x| x + 1 }
63
68
  end
@@ -72,28 +77,33 @@ module Webdrone
72
77
  exception = nil
73
78
  begin
74
79
  yield
75
- rescue => e
80
+ rescue StandardError => e
76
81
  exception = e
77
82
  bindings = Kernel.binding.callers
78
- bindings[0..-1].each_with_index do |binding, index|
83
+ bindings[0..-1].each do |binding|
79
84
  location = { path: binding.eval('__FILE__'), lineno: binding.eval('__LINE__') }
80
- if Gem.path.none? { |path| location[:path].include? path }
81
- result[:exception] = {}
82
- result[:exception][:line] = location[:lineno]
83
- result[:exception][:path] = location[:path]
84
- break
85
- end
86
- end
85
+ next unless Gem.path.none? { |path| location[:path].include? path }
86
+
87
+ result[:exception] = {}
88
+ result[:exception][:line] = location[:lineno]
89
+ result[:exception][:path] = location[:path]
90
+
91
+ break
92
+ end
87
93
  end
88
94
  result[:trace_count] = @group_trace_count.pop
89
95
  fin = Time.new
90
96
  trace(ini, fin, cl_path, cl_line, Logs, :with_group, [name, abort_error: abort_error], result, exception, nil)
91
97
  puts "abort_error: #{abort_error} exception: #{exception}"
92
- exit if abort_error == true and exception
98
+ exit if abort_error == true && exception
93
99
  end
94
100
 
95
101
  def setup_format
96
- cols, line = HighLine::SystemExtensions.terminal_size
102
+ begin
103
+ cols, _line = HighLine.default_instance.terminal.terminal_size
104
+ rescue StandardError
105
+ cols = 120
106
+ end
97
107
  total = 6 + 15 + 11 + 5
98
108
  w = cols - total
99
109
  w /= 2
@@ -128,54 +138,54 @@ module Webdrone
128
138
  end
129
139
 
130
140
  class Clic
131
- include MethodLogger.new [:id, :css, :link, :button, :on, :option, :xpath]
141
+ include MethodLogger.new %i[id css link button on option xpath]
132
142
  end
133
143
 
134
144
  class Conf
135
- include MethodLogger.new [:timeout=, :outdir=, :error=, :developer=, :logger=]
145
+ include MethodLogger.new %i[timeout= outdir= error= developer= logger=]
136
146
  end
137
147
 
138
148
  class Ctxt
139
- include MethodLogger.new [:create_tab, :close_tab, :with_frame, :reset, :with_alert, :ignore_alert, :with_conf]
149
+ include MethodLogger.new %i[create_tab close_tab with_frame reset with_alert ignore_alert with_conf]
140
150
  end
141
151
 
142
152
  class Find
143
- include MethodLogger.new [:id, :css, :link, :button, :on, :option, :xpath]
153
+ include MethodLogger.new %i[id css link button on option xpath]
144
154
  end
145
155
 
146
156
  class Form
147
- include MethodLogger.new [:with_xpath, :save, :set, :get, :clic, :mark, :submit, :xlsx]
157
+ include MethodLogger.new %i[with_xpath save set get clic mark submit xlsx]
148
158
  end
149
159
 
150
160
  class Html
151
- include MethodLogger.new [:id, :css, :link, :button, :on, :option, :xpath]
161
+ include MethodLogger.new %i[id css link button on option xpath]
152
162
  end
153
163
 
154
164
  class Mark
155
- include MethodLogger.new [:id, :css, :link, :button, :on, :option, :xpath]
165
+ include MethodLogger.new %i[id css link button on option xpath]
156
166
  end
157
167
 
158
168
  class Open
159
- include MethodLogger.new [:url, :reload]
169
+ include MethodLogger.new %i[url reload]
160
170
  end
161
171
 
162
172
  class Shot
163
- include MethodLogger.new [:screen]
173
+ include MethodLogger.new %i[screen]
164
174
  end
165
175
 
166
176
  class Text
167
- include MethodLogger.new [:id, :css, :link, :button, :on, :option, :xpath]
177
+ include MethodLogger.new %i[id css link button on option xpath]
168
178
  end
169
179
 
170
180
  class Vrfy
171
- include MethodLogger.new [:id, :css, :link, :button, :on, :option, :xpath]
181
+ include MethodLogger.new %i[id css link button on option xpath]
172
182
  end
173
183
 
174
184
  class Wait
175
- include MethodLogger.new [:for, :time]
185
+ include MethodLogger.new %i[for time]
176
186
  end
177
187
 
178
188
  class Xlsx
179
- include MethodLogger.new [:dict, :rows, :both, :save, :reset]
189
+ include MethodLogger.new %i[dict rows both save reset]
180
190
  end
181
191
  end
data/lib/webdrone/mark.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Webdrone
2
4
  class Browser
3
5
  def mark
@@ -6,7 +8,8 @@ module Webdrone
6
8
  end
7
9
 
8
10
  class Mark
9
- attr_accessor :a0, :default_times, :default_delay, :clear
11
+ attr_accessor :default_times, :default_delay, :clear
12
+ attr_reader :a0
10
13
 
11
14
  def initialize(a0)
12
15
  @a0 = a0
@@ -18,8 +21,8 @@ module Webdrone
18
21
  def mark(text, n: 1, all: false, visible: true, scroll: false, parent: nil, color: '#af1616', times: nil, delay: nil, shot: nil)
19
22
  item = @a0.find.send __callee__, text, n: n, all: all, visible: visible, scroll: scroll, parent: parent
20
23
  mark_item item, color: color, times: times, delay: delay, shot: shot, text: text
21
- rescue => exception
22
- Webdrone.report_error(@a0, exception)
24
+ rescue StandardError => error
25
+ Webdrone.report_error(@a0, error)
23
26
  end
24
27
 
25
28
  alias_method :id, :mark
@@ -41,7 +44,7 @@ module Webdrone
41
44
  mark_item_border item, color
42
45
  sleep delay
43
46
  end
44
- @a0.shot.screen shot.is_a?(String) ? shot : text if shot
47
+ @a0.shot.screen shot.is_a?(String) ? shot : text if shot
45
48
  mark_clear item if @clear
46
49
  item
47
50
  end
@@ -54,8 +57,8 @@ module Webdrone
54
57
  style = color ? "'2px solid #{color}'" : "null"
55
58
  set_outline = "arguments[0].style.outline = #{style}"
56
59
  if item.is_a? Array
57
- item.each do |item|
58
- @a0.exec.script(set_outline, item)
60
+ item.each do |subitem|
61
+ @a0.exec.script(set_outline, subitem)
59
62
  end
60
63
  else
61
64
  @a0.exec.script(set_outline, item)
data/lib/webdrone/open.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Webdrone
2
4
  class Browser
3
5
  def open
@@ -6,7 +8,7 @@ module Webdrone
6
8
  end
7
9
 
8
10
  class Open
9
- attr_accessor :a0
11
+ attr_reader :a0
10
12
 
11
13
  def initialize(a0)
12
14
  @a0 = a0
@@ -14,14 +16,14 @@ module Webdrone
14
16
 
15
17
  def url(url)
16
18
  @a0.driver.get url
17
- rescue => exception
18
- Webdrone.report_error(@a0, exception)
19
+ rescue StandardError => error
20
+ Webdrone.report_error(@a0, error)
19
21
  end
20
22
 
21
23
  def reload
22
24
  @a0.driver.navigate.refresh
23
- rescue => exception
24
- Webdrone.report_error(@a0, exception)
25
+ rescue StandardError => error
26
+ Webdrone.report_error(@a0, error)
25
27
  end
26
28
  end
27
29
  end