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 +7 -0
- data/lib/watir-search/load_view.rb +65 -0
- data/lib/watir-search/search_engine.yml +7 -0
- data/lib/watir-search.rb +30 -0
- metadata +60 -0
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
|
data/lib/watir-search.rb
ADDED
@@ -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: []
|