page_object_wrapper 0.0.6 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +180 -340
- data/bad_pages/bad_page.rb +34 -0
- data/good_pages/another_test_page.rb +14 -0
- data/good_pages/some_test_page.rb +53 -0
- data/good_pages/test_table_page.rb +12 -0
- data/img/scheme.png +0 -0
- data/lib/page_object_wrapper.rb +57 -92
- data/lib/page_object_wrapper/Action.rb +11 -0
- data/lib/page_object_wrapper/Dsl.rb +35 -0
- data/lib/page_object_wrapper/Element.rb +15 -0
- data/lib/page_object_wrapper/ElementsSet.rb +22 -0
- data/lib/page_object_wrapper/Exceptions.rb +7 -21
- data/lib/page_object_wrapper/PageObject.rb +371 -0
- data/lib/page_object_wrapper/Pagination.rb +6 -57
- data/lib/page_object_wrapper/Table.rb +13 -48
- data/lib/page_object_wrapper/known_elements.rb +31 -0
- data/lib/page_object_wrapper/version.rb +1 -1
- data/spec/define_page_object_spec.rb +162 -0
- data/spec/defined_elements_spec.rb +77 -0
- data/spec/feed_elements_spec.rb +95 -0
- data/spec/fire_event_spec.rb +53 -0
- data/spec/generate_spec.rb +20 -0
- data/spec/load_spec.rb +46 -0
- data/spec/open_spec.rb +70 -0
- data/spec/select_from_spec.rb +84 -0
- data/spec/shared_examples.rb +12 -0
- data/spec/spec_helper.rb +2 -15
- metadata +35 -27
- data/Gemfile +0 -4
- data/LICENSE.txt +0 -22
- data/Rakefile +0 -1
- data/lib/page_object_wrapper/Distribution.rb +0 -43
- data/lib/page_object_wrapper/DynamicClass.rb +0 -31
- data/lib/page_object_wrapper/Editable.rb +0 -13
- data/lib/page_object_wrapper/Form.rb +0 -116
- data/lib/page_object_wrapper/Submitter.rb +0 -8
- data/page_object_wrapper.gemspec +0 -22
- data/spec/example_spec.rb +0 -42
- data/spec/form_spec.rb +0 -176
- data/spec/page_object_spec.rb +0 -173
- data/spec/pagination_spec.rb +0 -14
- data/spec/table_spec.rb +0 -52
- data/spec/test_data_spec.rb +0 -38
data/Rakefile
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
require "bundler/gem_tasks"
|
@@ -1,43 +0,0 @@
|
|
1
|
-
class Distribution
|
2
|
-
attr_accessor :total_object_number
|
3
|
-
# distribution types
|
4
|
-
RANDOM=0 #(default)
|
5
|
-
SEQUENTAL=1
|
6
|
-
def initialize(dist_hash) # {status_name => status_probability (in percents)}
|
7
|
-
@distribution=dist_hash
|
8
|
-
@type=RANDOM
|
9
|
-
@sequental_increment=1
|
10
|
-
@sequental_index=@sequental_increment
|
11
|
-
# check for consistency
|
12
|
-
raise "Distribution init error > summ of percents must be 100" if @distribution.values.inject{|sum,x| sum + x }!=100
|
13
|
-
end
|
14
|
-
|
15
|
-
def type(type,total_object_number=nil)
|
16
|
-
raise "Unknown type: #{type}. Possible types are Distribution::RANDOM, Distribution::SEQUENTAL" if not (type==RANDOM or type==SEQUENTAL)
|
17
|
-
@type=type
|
18
|
-
if @type==SEQUENTAL
|
19
|
-
raise "SEQUENTAL type requires the total number of objects that will be generated (>0)" if (total_object_number==nil or total_object_number==0)
|
20
|
-
@sequental_increment=(100/total_object_number).floor
|
21
|
-
@sequental_index=@sequental_increment
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
def generate
|
26
|
-
r=(@type==RANDOM)? rand(100) : @sequental_index
|
27
|
-
@sequental_index=(@sequental_index<100)? @sequental_index+@sequental_increment : @sequental_increment
|
28
|
-
dist_ary=@distribution.values
|
29
|
-
dist_ary_normalized=[]
|
30
|
-
dist_ary_normalized << dist_ary.first
|
31
|
-
for i in 1..dist_ary.length-1
|
32
|
-
dist_ary_normalized[i]=dist_ary_normalized[i-1]+dist_ary[i]
|
33
|
-
end
|
34
|
-
ind=(dist_ary_normalized << r).sort!.index(r)
|
35
|
-
return @distribution.keys[ind]
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
#d=Distribution.new('new'=>10,'old'=>30,'very_old'=>60)
|
40
|
-
#d.type(Distribution::SEQUENTAL,10)
|
41
|
-
#10.times do
|
42
|
-
# puts d.generate
|
43
|
-
#end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
require 'Exceptions'
|
3
|
-
class DynamicClass
|
4
|
-
|
5
|
-
def metaclass
|
6
|
-
class << self
|
7
|
-
self
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
@@objects=[]
|
12
|
-
def initialize(xml_hash)
|
13
|
-
raise DynamicClassError.new('parameter is not a hash','new',xml_hash) if not xml_hash.is_a?(Hash)
|
14
|
-
xml_hash.each_pair {|attr, value|
|
15
|
-
metaclass.send :attr_accessor, attr
|
16
|
-
send "#{attr}=".to_sym, value
|
17
|
-
}
|
18
|
-
@@objects << self
|
19
|
-
end
|
20
|
-
|
21
|
-
def self.find(attr,value)
|
22
|
-
ind=@@objects.collect(&attr.to_sym).index(value)
|
23
|
-
@@objects[ind]
|
24
|
-
end
|
25
|
-
def self.each
|
26
|
-
@@objects.each{|object|
|
27
|
-
yield object
|
28
|
-
}
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
@@ -1,13 +0,0 @@
|
|
1
|
-
class Editable
|
2
|
-
attr_accessor :watir_element, :label, :default, :required
|
3
|
-
def initialize(watir_element,label,default,required)
|
4
|
-
@watir_element = watir_element
|
5
|
-
@label=label.to_sym
|
6
|
-
@default=default
|
7
|
-
@required=required
|
8
|
-
end
|
9
|
-
|
10
|
-
def required?
|
11
|
-
required
|
12
|
-
end
|
13
|
-
end
|
@@ -1,116 +0,0 @@
|
|
1
|
-
require 'Editable'
|
2
|
-
require 'Exceptions'
|
3
|
-
require 'Submitter'
|
4
|
-
class Form < Watir::Form
|
5
|
-
def initialize(current_page,target_page,accessor,*args)
|
6
|
-
super(accessor,extract_selector(args).merge(:tag_name => "form"))
|
7
|
-
@elements=[]
|
8
|
-
@accessor=accessor
|
9
|
-
@current_page=current_page
|
10
|
-
@target_page=target_page
|
11
|
-
@submit_element = nil
|
12
|
-
end
|
13
|
-
|
14
|
-
def editable(type,how_find_hash,label=type,default='Field data',required=false)
|
15
|
-
watir_element = @accessor.send(type.to_sym,how_find_hash)
|
16
|
-
raise FormError.new('Element not found', 'editable', "TYPE=#{type.inspect}, HOW_FIND=#{how_find_hash.inspect}, PAGE=#{@current_page.class.name}") if not element.exists?
|
17
|
-
Form.send :define_method, label do
|
18
|
-
watir_element
|
19
|
-
end
|
20
|
-
@elements << Editable.new(watir_element,label,default,required)
|
21
|
-
end
|
22
|
-
|
23
|
-
def submitter(type,how_find_hash,how_click_method ='click',*click_params)
|
24
|
-
# find submitter
|
25
|
-
@submit_element = Submitter.new(how_click_method,click_params)
|
26
|
-
@submit_element.watir_element = @accessor.send(type.to_sym,how_find_hash)
|
27
|
-
raise FormError.new('Element not found', 'submitter', "TYPE=#{type.inspect}, HOW_FIND=#{how_find_hash.inspect}") if not @submit_element.watir_element.exists?
|
28
|
-
end
|
29
|
-
|
30
|
-
def submit(correct_submission_flag)
|
31
|
-
return_page = (correct_submission_flag==true)? @target_page : @current_page
|
32
|
-
if @submit_element.nil?
|
33
|
-
# submitter is not defined, applying regular form submission
|
34
|
-
super()
|
35
|
-
return return_page.new
|
36
|
-
else
|
37
|
-
# submitter defined, applying its submission method
|
38
|
-
begin
|
39
|
-
@submit_element.watir_element.send(@submit_element.how_click_method.to_sym,*@submit_element.click_params)
|
40
|
-
rescue Exception => e
|
41
|
-
puts "ORIGINAL ERROR: #{e.message}"
|
42
|
-
raise FormError.new('Error clicking submitter', "SUBMITTER: WATIR_ELEMENT=#{@submit_element.watir_element}, HOW_FIND=#{@submit_element.how_find_hash}", "CLICK_METHOD: #{@submit_element.how_click_mehtod}, CLICK_PARAMS: #{@submit_element.click_params}")
|
43
|
-
end
|
44
|
-
return return_page.new
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def default(label)
|
49
|
-
find_input(label).default
|
50
|
-
end
|
51
|
-
|
52
|
-
def each
|
53
|
-
@elements.each{|e|
|
54
|
-
yield e
|
55
|
-
}
|
56
|
-
end
|
57
|
-
|
58
|
-
def each_required
|
59
|
-
@elements.select{|f| f.required}.each{|e|
|
60
|
-
yield e
|
61
|
-
}
|
62
|
-
end
|
63
|
-
|
64
|
-
def fill_only(data_hash)
|
65
|
-
if data_hash.nil?
|
66
|
-
raise FormError.new('Invalid parameter','fill_only',data_hash)
|
67
|
-
else
|
68
|
-
data_hash.each_key{|label|
|
69
|
-
f=find_input(label)
|
70
|
-
f.watir_element.set(data_hash[label])
|
71
|
-
}
|
72
|
-
end
|
73
|
-
self
|
74
|
-
end
|
75
|
-
|
76
|
-
def fill_all(except_hash=nil)
|
77
|
-
fill_elements(@elements,except_hash)
|
78
|
-
self
|
79
|
-
end
|
80
|
-
|
81
|
-
def fill_required(except_hash=nil)
|
82
|
-
fill_elements(@elements.select{|f| f.required},except_hash)
|
83
|
-
self
|
84
|
-
end
|
85
|
-
|
86
|
-
|
87
|
-
private
|
88
|
-
def find_input(label)
|
89
|
-
label = label.to_sym
|
90
|
-
index=@elements.collect(&:label).index(label)
|
91
|
-
raise FormError.new('label not found','find_input',label) if index.nil?
|
92
|
-
@elements[index]
|
93
|
-
end
|
94
|
-
def fill_elements(elements,except_hash)
|
95
|
-
elements = @elements.clone
|
96
|
-
if not except_hash.nil?
|
97
|
-
if not except_hash.has_key?(:except)
|
98
|
-
raise FormError.new('Invalid parameter, must be :except=>"label or [label1,label2,...]"',"fill_elements",elements.inspect,except_hash.inspect)
|
99
|
-
else
|
100
|
-
if except_hash[:except].is_a?(String) or except_hash[:except].is_a?(Symbol)
|
101
|
-
elements.delete(find_input(except_hash[:except]))
|
102
|
-
elsif except_hash[:except].is_a?(Array)
|
103
|
-
except_hash[:except].each{|label|
|
104
|
-
elements.delete(find_input(label))
|
105
|
-
}
|
106
|
-
else
|
107
|
-
raise FormError.new('Invalid parameter',"fill_elements",elements.inspect,except_hash.inspect)
|
108
|
-
end
|
109
|
-
end
|
110
|
-
end
|
111
|
-
elements.select{|e| e.respond_to?(:set)}.each{|field|
|
112
|
-
field.watir_element.when_present.set(field.default)
|
113
|
-
}
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
data/page_object_wrapper.gemspec
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'page_object_wrapper/version'
|
5
|
-
|
6
|
-
Gem::Specification.new do |gem|
|
7
|
-
gem.name = "page_object_wrapper"
|
8
|
-
gem.version = PageObjectWrapper::VERSION
|
9
|
-
gem.authors = ["Evgeniy Khatko"]
|
10
|
-
gem.email = ["evgeniy.khatko@gmail.com"]
|
11
|
-
gem.description = %q{Wraps watir-webdriver with convenient testing interface, based on PageObjects automation testing pattern. Simplifies resulting automated test understanding.}
|
12
|
-
gem.summary = %q{Wraps watir-webdriver with convenient testing interface.}
|
13
|
-
gem.homepage = "https://github.com/evgeniy-khatko/page_object_wrapper"
|
14
|
-
gem.add_dependency "watir-webdriver"
|
15
|
-
gem.add_development_dependency "rspec", ">= 2.0.0"
|
16
|
-
|
17
|
-
|
18
|
-
gem.files = `git ls-files`.split($/)
|
19
|
-
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
20
|
-
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
21
|
-
gem.require_paths = ["lib","lib/page_object_wrapper"]
|
22
|
-
end
|
data/spec/example_spec.rb
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe "Overall usage" do
|
4
|
-
describe "Test Google for long search query" do
|
5
|
-
let(:precondition){"Open google.com page"}
|
6
|
-
let(:step1){"Enter long search query into the search field"}
|
7
|
-
let(:step2){"Press search button"}
|
8
|
-
let(:expected_result){"The requested URL /... is too large to process"}
|
9
|
-
|
10
|
-
describe "Defining two page objects: GoogleSearchPage, GoogleErrorPage and performing test" do
|
11
|
-
let(:pages_definition){
|
12
|
-
class GoogleSearchPage < PageObjectWrapper::Page
|
13
|
-
attr_accessor :find_form
|
14
|
-
@url="/"
|
15
|
-
expected_element :text_field, :name => 'q'
|
16
|
-
def initialize visit=false
|
17
|
-
super visit
|
18
|
-
@find_form = form(GoogleErrorPage, {:action => '/search'})
|
19
|
-
@find_form.editable(:text_field, {:name => 'q'}, :seach_what, '@find_form default value', true)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
class GoogleErrorPage < PageObjectWrapper::Page
|
24
|
-
@url="really does not matter, because navigating to this page done through search query submission"
|
25
|
-
#expected_element :ins, {:text => "That\’s an error."}
|
26
|
-
end
|
27
|
-
{:gsearch_page_class => GoogleSearchPage, :gerror_page => GoogleErrorPage}
|
28
|
-
}
|
29
|
-
|
30
|
-
it "performing test" do
|
31
|
-
puts precondition
|
32
|
-
google_page = pages_definition[:gsearch_page_class].new(true)
|
33
|
-
puts step1
|
34
|
-
long_query = 'q '*1000
|
35
|
-
google_page.find_form.fill_only(:seach_what => long_query)
|
36
|
-
puts step2
|
37
|
-
google_error_page = google_page.find_form.submit(true)
|
38
|
-
google_error_page.should have_text(expected_result)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
data/spec/form_spec.rb
DELETED
@@ -1,176 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
require 'spec_helper'
|
3
|
-
|
4
|
-
describe "Form wrapper" do
|
5
|
-
describe "form definition", :code => 6..30 do
|
6
|
-
let(:page_objects){
|
7
|
-
class GoogleAdvancedSearchPage < PageObjectWrapper::Page
|
8
|
-
attr_accessor :as_form
|
9
|
-
@url="/advanced_search"
|
10
|
-
expected_element :text_field, :name => 'as_q'
|
11
|
-
def initialize visit=false
|
12
|
-
super visit
|
13
|
-
@as_form = form(GoogleResultsPage, {:name => 'f'})
|
14
|
-
@as_form.editable(:text_field, {:name => 'as_q'}, :with_words, 'with_words default value', true)
|
15
|
-
@as_form.editable(:text_field, {:name => 'as_epq'}, :with_phrase, 'with_phrase default value', true)
|
16
|
-
@as_form.editable(:text_field, {:name => 'as_oq'}, :with_any_word, 'with_any_word default value', false)
|
17
|
-
@as_form.submitter(:input, {:type => 'submit'})
|
18
|
-
end
|
19
|
-
end
|
20
|
-
class GoogleResultsPage < PageObjectWrapper::Page
|
21
|
-
@url="/"
|
22
|
-
expected_element :button, :name => 'btnG'
|
23
|
-
def initialize visit=false
|
24
|
-
super visit
|
25
|
-
@find_form = form(GoogleResultsPage, {:action => '/search'})
|
26
|
-
@find_form.editable(:text_field, {:name => 'q'}, :seach_what, '@find_form default value', true)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
{:gresults_page_class => GoogleResultsPage, :gadv_page_class => GoogleAdvancedSearchPage}
|
30
|
-
}
|
31
|
-
|
32
|
-
|
33
|
-
it "is defined as #form(TargetPage, how_find_hash)", :code => [13,25] do
|
34
|
-
page_objects[:gadv_page_class].new(true).as_form.class.should eq(Form)
|
35
|
-
end
|
36
|
-
|
37
|
-
it "has #editable(:field_type, how_find_hash, :label, default_value, required?) method to set form's fields
|
38
|
-
:field_type sets corresponding watir element type
|
39
|
-
how_find_hash is used to locate corresponding watir element on the page
|
40
|
-
:label is used to reffer to the form field after definition
|
41
|
-
default_value is used to populate fields with default test data
|
42
|
-
required = true | false and indicates if the field is required
|
43
|
-
", :code => 14..16 do
|
44
|
-
gadv_page = page_objects[:gadv_page_class].new(true)
|
45
|
-
gadv_page.as_form.with_words.tag_name.should eq('input')
|
46
|
-
gadv_page.as_form.with_words.name.should eq('as_q')
|
47
|
-
gadv_page.as_form.with_words.should be_a(Watir::TextField)
|
48
|
-
end
|
49
|
-
|
50
|
-
it "has #submitter(:field_type, how_find_hash, how_click_mehtod, click_params) method to set form's submitter
|
51
|
-
:field_type sets corresponding watir element type
|
52
|
-
how_find_hash is used to locate corresponding watir element on the page
|
53
|
-
how_click_mehtod is used to tell Waitr the method which should be applied to click the submitter
|
54
|
-
click_params set parameters for the how_click_mehtod
|
55
|
-
", :code => 17 do
|
56
|
-
end
|
57
|
-
end
|
58
|
-
describe "form usage", :code => 59..84 do
|
59
|
-
let(:page_objects){
|
60
|
-
class GoogleAdvancedSearchPage < PageObjectWrapper::Page
|
61
|
-
attr_accessor :as_form
|
62
|
-
@url="/advanced_search"
|
63
|
-
expected_element :text_field, :name => 'as_q'
|
64
|
-
def initialize visit=false
|
65
|
-
super visit
|
66
|
-
@as_form = form(GoogleSearchPage, {:name => 'f'})
|
67
|
-
@as_form.editable(:text_field, {:name => 'as_q'}, :with_words, 'with_words default value', true)
|
68
|
-
@as_form.editable(:text_field, {:name => 'as_epq'}, :with_phrase, 'with_phrase default value', true)
|
69
|
-
@as_form.editable(:text_field, {:name => 'as_oq'}, :with_any_word, 'with_any_word default value', false)
|
70
|
-
@as_form.submitter(:input, {:type => 'submit'})
|
71
|
-
end
|
72
|
-
end
|
73
|
-
class GoogleSearchPage < PageObjectWrapper::Page
|
74
|
-
attr_accessor :find_form
|
75
|
-
@url="/"
|
76
|
-
expected_element :text_field, :name => 'q' # tells Watir that we expect this element which identifies the page in a uniq way
|
77
|
-
def initialize visit=false
|
78
|
-
super visit
|
79
|
-
@find_form = form(GoogleSearchPage, {:action => '/search'})
|
80
|
-
@find_form.editable(:text_field, {:name => 'q'}, :search_what, '@find_form default value', true)
|
81
|
-
end
|
82
|
-
end
|
83
|
-
{:gsearch_page_class => GoogleSearchPage, :gadv_page_class => GoogleAdvancedSearchPage}
|
84
|
-
}
|
85
|
-
|
86
|
-
it "has #submit(flag) method which submits form
|
87
|
-
if flag = true than TargetPage instance is returned
|
88
|
-
if flag = false than CurrentPage instance is returned
|
89
|
-
if submitter is defined, than it's used to submit the form, otherwise standart Watir::Form submit is used
|
90
|
-
", :code => 91..95 do
|
91
|
-
gadv_page = page_objects[:gadv_page_class].new(true)
|
92
|
-
gsearch_page = gadv_page.as_form.submit(true)
|
93
|
-
gsearch_page.should be_a(GoogleSearchPage)
|
94
|
-
gsearch_page_reloaded = gsearch_page.find_form.submit(false)
|
95
|
-
gsearch_page_reloaded.should be_a(GoogleSearchPage)
|
96
|
-
end
|
97
|
-
|
98
|
-
it "field's watir elements can be accessed by labels", :code => 99..100 do
|
99
|
-
gsearch_page = page_objects[:gsearch_page_class].new(true)
|
100
|
-
gsearch_page.find_form.search_what.should be_a(Watir::TextField)
|
101
|
-
end
|
102
|
-
|
103
|
-
it "fields default values set during form definition can be retrieved with #default(:label) method", :code => 104..105 do
|
104
|
-
gsearch_page = page_objects[:gsearch_page_class].new(true)
|
105
|
-
gsearch_page.find_form.default(:search_what).should eq('@find_form default value')
|
106
|
-
end
|
107
|
-
|
108
|
-
it "has #each method which allows navigating between form fields", :code => 110..112 do
|
109
|
-
gadv_page = page_objects[:gadv_page_class].new(true)
|
110
|
-
gadv_page.as_form.each{|form_field|
|
111
|
-
form_field.should be_a(Editable)
|
112
|
-
form_field.watir_element.should be_a(Watir::TextField)
|
113
|
-
}
|
114
|
-
end
|
115
|
-
|
116
|
-
it "has #each_required method which allows navigating between form required fields", :code => 118..122 do
|
117
|
-
gadv_page = page_objects[:gadv_page_class].new(true)
|
118
|
-
gadv_page.as_form.each_required{|form_field|
|
119
|
-
form_field.should be_a(Editable)
|
120
|
-
form_field.watir_element.should be_a(Watir::TextField)
|
121
|
-
form_field.should be_required
|
122
|
-
}
|
123
|
-
end
|
124
|
-
|
125
|
-
it "has #fill_only(:label => value) method which populated form's :label field with \'value\'
|
126
|
-
method returns form object
|
127
|
-
", :code => 129..130 do
|
128
|
-
gadv_page = page_objects[:gadv_page_class].new(true)
|
129
|
-
form = gadv_page.as_form.fill_only(:with_words => 'some value')
|
130
|
-
gadv_page.as_form.with_words.value.should eq('some value')
|
131
|
-
form.should be_a(Form)
|
132
|
-
end
|
133
|
-
|
134
|
-
it "has #fill_all(:except => labels_array | label) method which populated all form's fields with default values
|
135
|
-
if except_hash is not nil than provided fields are not populated
|
136
|
-
method returns form object
|
137
|
-
", :code => 139..142 do
|
138
|
-
gadv_page = page_objects[:gadv_page_class].new(true)
|
139
|
-
form = gadv_page.as_form.fill_all
|
140
|
-
gadv_page.as_form.each{|field|
|
141
|
-
field.watir_element.value.should eq(gadv_page.as_form.default(field.label))
|
142
|
-
}
|
143
|
-
gadv_page = page_objects[:gadv_page_class].new(true)
|
144
|
-
gadv_page.as_form.fill_all(:except => :with_words)
|
145
|
-
gadv_page.as_form.each{|field|
|
146
|
-
if field.label==:with_words
|
147
|
-
field.watir_element.value.should eq ''
|
148
|
-
else
|
149
|
-
field.watir_element.value.should eq(gadv_page.as_form.default(field.label))
|
150
|
-
end
|
151
|
-
}
|
152
|
-
form.should be_a(Form)
|
153
|
-
end
|
154
|
-
|
155
|
-
it "has #fill_required(:except => labels_array | label) method which populated all required form's fields with default values
|
156
|
-
if except_hash is not nil than provided fields are not populated
|
157
|
-
method returns form object
|
158
|
-
", :code => 165..172 do
|
159
|
-
gadv_page = page_objects[:gadv_page_class].new(true)
|
160
|
-
form = gadv_page.as_form.fill_required
|
161
|
-
gadv_page.as_form.each_required{|field|
|
162
|
-
field.watir_element.value.should eq(gadv_page.as_form.default(field.label))
|
163
|
-
}
|
164
|
-
gadv_page = page_objects[:gadv_page_class].new(true)
|
165
|
-
gadv_page.as_form.fill_required(:except => :with_words)
|
166
|
-
gadv_page.as_form.each_required{|field|
|
167
|
-
if field.label==:with_words
|
168
|
-
field.watir_element.value.should eq ''
|
169
|
-
else
|
170
|
-
field.watir_element.value.should eq(gadv_page.as_form.default(field.label))
|
171
|
-
end
|
172
|
-
}
|
173
|
-
form.should be_a(Form)
|
174
|
-
end
|
175
|
-
end
|
176
|
-
end
|