smart_driver 1.0.1 → 1.1.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
  SHA1:
3
- metadata.gz: d8160985cfdd5f728718306a1c64898d87f596b8
4
- data.tar.gz: 3c0edb4b022f975a0d838641c04d803a3d47b4a8
3
+ metadata.gz: f7f1e40525ae0561f12ad7d767e7327f9a9647c2
4
+ data.tar.gz: 487c68a8c6cb46e791dcb59444ccd6897671a589
5
5
  SHA512:
6
- metadata.gz: c04f2a7ac82a109c2f0a695432fd2519640ce27d6bf3bfb2663c413f61e5b147faf744e5ccf2f17ef3a584817cedd96cfe58d72d873cae1a10e47bc6fd991000
7
- data.tar.gz: 5ca35deb3420f9964cfb9cfed2b842445d385a7875c861f2dd643f9f1d615d4d1a0b1c708ff0800209d442b83beda79c11d1a4dd8d4ffd53143b4960e2099905
6
+ metadata.gz: dc48552df327c3b63ef5b08baf0503edaa024feafbaf8c9d3af040f5da8299026c71c4c6a6247d6a88f1c15de41a802ad3235d98a783dca8c63b13ed23ed6eb0
7
+ data.tar.gz: ed46c725f6e46070605f94087e32d1c86eafe17c0c5e3d1dd7d994e89b5f07c05ad51700ade91fee23a98aaf62133237a6335ffdddc82bb1e1e17bf03fac9b89
@@ -0,0 +1,48 @@
1
+ class SmartDriver
2
+ module CommonInterface
3
+ def find(selector)
4
+ logging :info, "find #{selector}..."
5
+ @__driver__.find_element(css: selector)
6
+ rescue Selenium::WebDriver::Error::NoSuchElementError
7
+ logging :fail, "#{selector} cannot be found"
8
+ nil
9
+ end
10
+
11
+ def finds(selector)
12
+ logging :info, "finds #{selector}..."
13
+ @__driver__.find_elements(css: selector)
14
+ rescue Selenium::WebDriver::Error::NoSuchElementError
15
+ logging :fail, "#{selector} cannot be found"
16
+ nil
17
+ end
18
+
19
+ def find_text(text)
20
+ logging :info, "find text '#{text}'..."
21
+ @__driver__.find_element({xpath: "//*[text()[contains(.,\"#{text}\")]]"})
22
+ rescue Selenium::WebDriver::Error::NoSuchElementError
23
+ logging :fail, "text '#{text}' cannot be found"
24
+ nil
25
+ end
26
+
27
+ def finds_text(text)
28
+ logging :info, "finds text '#{text}'..."
29
+ @__driver__.find_elements({xpath: "//*[text()[contains(.,\"#{text}\")]]"})
30
+ rescue Selenium::WebDriver::Error::NoSuchElementError
31
+ logging :fail, "text #{text} cannot be found"
32
+ nil
33
+ end
34
+
35
+ def to_html
36
+ attribute("outerHTML")
37
+ end
38
+
39
+ private
40
+ def logging(sym, text)
41
+ label = case sym
42
+ when :info then "INFO"
43
+ when :fail then "FAIL"
44
+ end
45
+ puts "[#{label}] #{text}"
46
+ end
47
+ end
48
+ end
@@ -1,3 +1,3 @@
1
1
  class SmartDriver
2
- VERSION = "1.0.1"
2
+ VERSION = "1.1.0"
3
3
  end
data/lib/smart_driver.rb CHANGED
@@ -1,10 +1,16 @@
1
1
  require 'selenium-webdriver'
2
2
 
3
+ require 'smart_driver/common_interface'
4
+
3
5
  class SmartDriver
4
6
  attr_accessor :__driver__
7
+ attr_reader :log_dir_path
8
+ include SmartDriver::CommonInterface
5
9
 
6
- def initialize(url=nil, browser=:chrome)
10
+ def initialize(url=nil, log_dir_path="./log", browser=:chrome)
7
11
  @__driver__ = Selenium::WebDriver.for(browser)
12
+ FileUtils.mkdir_p log_dir_path
13
+ @log_dir_path = log_dir_path
8
14
  go(url) if url
9
15
  end
10
16
 
@@ -17,55 +23,6 @@ class SmartDriver
17
23
  @__driver__.navigate.refresh
18
24
  end
19
25
 
20
- def find(selector)
21
- logging :info, "find #{selector}..."
22
- @__driver__.find_element(css: selector)
23
- rescue Selenium::WebDriver::Error::NoSuchElementError
24
- logging :fail, "#{selector} cannot be found"
25
- end
26
-
27
- def finds(selector)
28
- logging :info, "finds #{selector}..."
29
- @__driver__.find_elements(css: selector)
30
- rescue Selenium::WebDriver::Error::NoSuchElementError
31
- logging :fail, "#{selector} cannot be found"
32
- end
33
-
34
- def find_by_text(text)
35
- logging :info, "find by text #{text}..."
36
- @__driver__.find_element({xpath: "//*[text()[contains(.,\"#{text}\")]]"})
37
- rescue Selenium::WebDriver::Error::NoSuchElementError
38
- logging :fail, "element with #{text} cannot be found"
39
- end
40
-
41
- def finds_by_text(text)
42
- logging :info, "finds by text #{text}..."
43
- @__driver__.find_elements({xpath: "//*[text()[contains(.,\"#{text}\")]]"})
44
- rescue Selenium::WebDriver::Error::NoSuchElementError
45
- logging :fail, "elements with #{text} cannot be found"
46
- end
47
-
48
- # http://stackoverflow.com/questions/11908249/debugging-element-is-not-clickable-at-point-error
49
- def scroll(selector)
50
- logging :info, "scroll to #{selector}..."
51
- element = find(selector)
52
- exec_js "window.scrollTo(#{element.location.x},#{element.location.y})"
53
- element
54
- end
55
-
56
- def has?(selector)
57
- !!find(selector)
58
- end
59
-
60
- def has_text?(text)
61
- !!find_by_text(text)
62
- end
63
-
64
- def click(selector)
65
- logging :info, "click #{selector}..."
66
- has?(selector) ? find(selector).click : false
67
- end
68
-
69
26
  def submit
70
27
  logging :info, "submit form ..."
71
28
  $focus.submit if $focus
@@ -75,8 +32,12 @@ class SmartDriver
75
32
  @__driver__.execute_script js_code
76
33
  end
77
34
 
78
- def save_html(file_path)
79
- File.open(file_path, 'w') { |f| f.write(@__driver__.page_source) }
35
+ def save_html(file_name="log.html")
36
+ File.open("#{@log_dir_path}/#{file_name}", 'w') { |f| f.write(@__driver__.page_source) }
37
+ end
38
+
39
+ def save_png(file_name="log.png")
40
+ @__driver__.save_screenshot "#{@log_dir_path}/#{file_name}"
80
41
  end
81
42
 
82
43
  def method_missing(method, *args, &block)
@@ -86,42 +47,14 @@ class SmartDriver
86
47
  def switch_window(num)
87
48
  @__driver__.switch_to.window @__driver__.window_handles[num]
88
49
  end
89
-
90
- private
91
- def logging(sym, text)
92
- label = case sym
93
- when :info then "INFO"
94
- when :fail then "FAIL"
95
- end
96
- puts "[#{label}] #{text}"
97
- end
98
50
  end
99
51
 
100
52
  class Selenium::WebDriver::Element
53
+ include SmartDriver::CommonInterface
54
+
101
55
  def fill(text)
102
56
  $focus = self
103
- logging :info, "fill #{text}..."
57
+ logging :info, "fill '#{text}'"
104
58
  send_key(text)
105
59
  end
106
-
107
- def find(selector)
108
- find_element(css: selector)
109
- end
110
-
111
- def finds(selector)
112
- find_elements(css: selector)
113
- end
114
-
115
- def to_html
116
- attribute("outerHTML")
117
- end
118
-
119
- private
120
- def logging(sym, text)
121
- label = case sym
122
- when :info then "INFO"
123
- when :fail then "FAIL"
124
- end
125
- puts "[#{label}] #{text}"
126
- end
127
60
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smart_driver
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - gogotanaka
@@ -84,6 +84,7 @@ files:
84
84
  - bin/setup
85
85
  - exe/smart_driver
86
86
  - lib/smart_driver.rb
87
+ - lib/smart_driver/common_interface.rb
87
88
  - lib/smart_driver/version.rb
88
89
  - smart_driver.gemspec
89
90
  homepage: http://aisaac.in