webdrone 1.7.8 → 1.8.0

Sign up to get free protection for your applications and to get access to all the features.
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