watir-search 0.0.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2569da452ce01ec935aff6f4d490b692eddc3a2e
4
+ data.tar.gz: 497f19d95ea54d8278af9d428bb3e8629af25ac5
5
+ SHA512:
6
+ metadata.gz: 238d9fb5fd9345f6811e379a81efd3275e34b52e9da93a420b2e6ce1d218a451cf07840427819e273b3958d66f66437f7a1a2c54c3f22bb9953f757731e1d43f
7
+ data.tar.gz: 7d3b6133d533b3240e57f4b378eae0bdc52a780a3d7b9b1a669ffe119f446573baf40014726325f3c5438c8306af0f02689414a88e9364b6d33067fecc37dcb2
@@ -0,0 +1,65 @@
1
+ require 'yaml'
2
+
3
+ module Watir
4
+ module LoadView
5
+ def decode_key(parent_key, key)
6
+ "#{parent_key}_#{key}".gsub(/^_/, '')
7
+ end
8
+
9
+ def read_new_hash(parent_key, key, value)
10
+ @new_key = decode_key(parent_key, key)
11
+ @new_value = value
12
+ end
13
+
14
+ def write_out_new_hash
15
+ @new_hash = {} unless @new_hash
16
+ @new_hash[@new_key] = @new_value
17
+ end
18
+
19
+ def rehash(hash, parent_key = nil)
20
+ hash.each do |key, value|
21
+ if value.is_a?(Hash)
22
+ read_new_hash(parent_key, key, value)
23
+ rehash(value, decode_key(parent_key, key))
24
+ else
25
+ write_out_new_hash
26
+ break
27
+ end
28
+ end
29
+ end
30
+
31
+ def decode_hash(hash)
32
+ rehash(hash)
33
+ new_hash = @new_hash
34
+ %w(key value hash).each do |var|
35
+ instance_variable_set("@new_#{var}", nil)
36
+ end
37
+ new_hash
38
+ end
39
+
40
+ def view_accessor(parent, hash)
41
+ attributes = hash.reject { |k, _v| %i(var_name node).include?(k) }
42
+ instance_variable_set(
43
+ "@#{hash[:var_name]}", parent.send(hash[:node], attributes))
44
+ define_singleton_method(hash[:var_name]) do
45
+ instance_variable_get("@#{hash[:var_name]}")
46
+ end
47
+ end
48
+
49
+ def view_array(hash)
50
+ array = []
51
+ hash.define_singleton_method(:to_attr) do
52
+ first = shift
53
+ str_hash = { var_name: first[0] }.merge(first[1])
54
+ Hash[str_hash.map { |k, v| [k.to_sym, v] }]
55
+ end
56
+ hash.each { array << hash.to_attr }
57
+ array
58
+ end
59
+
60
+ def load_view(file:nil, hash:nil, parent:nil)
61
+ hash ||= decode_hash(YAML.load_file(file))
62
+ view_array(hash).each { |h| view_accessor(parent, h) }
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,7 @@
1
+ general:
2
+ search:
3
+ node: text_field
4
+ index: 0
5
+ enter:
6
+ node: input
7
+ type: submit
@@ -0,0 +1,30 @@
1
+ require_relative 'watir-search/load_view'
2
+ require 'watir-webdriver'
3
+
4
+ module Watir
5
+ class Search
6
+ include LoadView
7
+ attr_reader :sys
8
+
9
+ def sys
10
+ return @sys if @sys
11
+ @sys = Watir::Browser.new(:firefox)
12
+ end
13
+
14
+ def initialize(url)
15
+ sys.goto url
16
+ sys
17
+ load_view(file: 'lib/watir-search/search_engine.yml', parent: sys)
18
+ end
19
+
20
+ def quit
21
+ sys.close if sys
22
+ end
23
+
24
+ def execute(text, timeout:nil)
25
+ general_search.when_present.set(text)
26
+ general_enter.click
27
+ sleep timeout if timeout
28
+ end
29
+ end
30
+ end
metadata ADDED
@@ -0,0 +1,60 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: watir-search
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Chao Li
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-07-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: watir-webdriver
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.8'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.8'
27
+ description: A simple web search by Watir
28
+ email: chaoli46@yahoo.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - lib/watir-search.rb
34
+ - lib/watir-search/load_view.rb
35
+ - lib/watir-search/search_engine.yml
36
+ homepage: https://github.com/chaoli46/water-search
37
+ licenses:
38
+ - MIT
39
+ metadata: {}
40
+ post_install_message:
41
+ rdoc_options: []
42
+ require_paths:
43
+ - lib
44
+ required_ruby_version: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ required_rubygems_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ requirements: []
55
+ rubyforge_project:
56
+ rubygems_version: 2.4.8
57
+ signing_key:
58
+ specification_version: 4
59
+ summary: Watir Search
60
+ test_files: []