Class: RWebSpec::AbstractWebPage

Inherits:
Object
  • Object
show all
Includes:
Assert, Driver, Utils
Defined in:
lib/rwebspec-mechanize/web_page.rb

Overview

WebPage (children of AbstractWebPage) encapsulates a real web page. For example,

beginAt("/home")
@web_browser.clickLinkWithText("/login")
@web_browser.setFormElement("username", "sa")

Can be rewritten to

begin_at("/home")
home_page = HomePage.new
 = home_page.clickLoginLink
.enterUserName("sa")

So you only need change in LoingPage class if UI changes, which happen quite often.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(the_browser, page_specific_text = nil) ⇒ AbstractWebPage

Returns a new instance of AbstractWebPage.



33
34
35
36
37
38
39
40
41
42
43
# File 'lib/rwebspec-mechanize/web_page.rb', line 33

def initialize(the_browser, page_specific_text = nil)
  @web_browser = @browser =  @web_tester = the_browser
  @page_specific_text = page_specific_text
  begin
    snapshot if $TESTWISE_DUMP_PAGE || $LOADWISE_DUMP_PAGE 
    delay = $TESTWISE_PAGE_DELAY || $LOADWISE_PAGE_DELAY
    sleep(delay)
  rescue => e
  end
  assert_on_page
end

Instance Attribute Details

#page_specific_textObject

browser: passed to do assertion within the page page_text: text used to identify the page, title will be the first candidate



31
32
33
# File 'lib/rwebspec-mechanize/web_page.rb', line 31

def page_specific_text
  @page_specific_text
end

Instance Method Details

#assert_not_on_pageObject



59
60
61
# File 'lib/rwebspec-mechanize/web_page.rb', line 59

def assert_not_on_page()
  assert_text_not_present(@page_specific_text) if @page_specific_text
end

#assert_on_pageObject

Assert is on current page Example

home_page = HomePage.new("Welcome to iTest2")
....
home_page.assert_on_page # will check the text 'Welcome to iTest2' still present on the page


55
56
57
# File 'lib/rwebspec-mechanize/web_page.rb', line 55

def assert_on_page()
  assert_text_present(@page_specific_text) if @page_specific_text
end

#browserObject

return the browser instance in page objects



46
47
48
# File 'lib/rwebspec-mechanize/web_page.rb', line 46

def browser
  @web_browser
end

#contains?(ary) ⇒ Boolean

TO validate

Returns:

  • (Boolean)


88
89
90
91
92
93
94
95
96
# File 'lib/rwebspec-mechanize/web_page.rb', line 88

def contains?(ary)
  return true if ary.nil?
  the_page_source = source
  found = false
  ary.each_line do |str|
    found ||= the_page_source.include?(str)
  end
  return found
end

#dump(stream = nil) ⇒ Object



63
64
65
# File 'lib/rwebspec-mechanize/web_page.rb', line 63

def dump(stream = nil)
  @web_browser.dump_response(stream)
end

#snapshot(replace_css = false) ⇒ Object

Will save current page source to a file

home_page = HomePage.new("Welcome to iTest2")
...
home_page.snapshot() # => save to 20090830100102_HomePage.html


102
103
104
# File 'lib/rwebspec-mechanize/web_page.rb', line 102

def	snapshot(replace_css = false)    
  save_current_page(:filename => Time.now.strftime("%m%d%H%M%S") + "_" + self.class.name.gsub(" ", "") + ".html" )
end

#sourceObject Also known as: html

Page source (html)



68
69
70
# File 'lib/rwebspec-mechanize/web_page.rb', line 68

def source
  @web_browser.page_source
end

#textObject

return current page text



79
80
81
# File 'lib/rwebspec-mechanize/web_page.rb', line 79

def text
  @web_browser.text
end

#titleObject

return current page title



74
75
76
# File 'lib/rwebspec-mechanize/web_page.rb', line 74

def title
  @web_browser.page_title
end

#urlObject



83
84
85
# File 'lib/rwebspec-mechanize/web_page.rb', line 83

def url
  @web_browser.url
end