lib/firewatir/container.rb in firewatir-1.6.2 vs lib/firewatir/container.rb in firewatir-1.6.5

- old
+ new

@@ -1,534 +1,491 @@ -=begin - # - # This module contains the factory methods that are used to access most html objects - # - # For example, to access a button on a web page that has the following html - # <input type = button name= 'b1' value='Click Me' onClick='javascript:doSomething()'> - # - # the following Firewatir code could be used - # - # ff.button(:name, 'b1').click - # - # or - # - # ff.button(:value, 'Click Me').to_s - # - # One can use any attribute to uniquely identify an element including the user defined attributes - # that is rendered on the HTML screen. Though, Attribute used to access an element depends on the type of element, - # attributes used frequently to address an element are listed below - # - # :index - find the item using the index in the container ( a container can be a document, - # a TableCell, a Span, a Div or a P) - # index is 1 based - # :name - find the item using the name attribute - # :id - find the item using the id attribute - # :value - find the item using the value attribute - # :caption - same as value - # :xpath - finds the item using xpath query - # - # Typical Usage - # - # ff.button(:id, 'b_1') # access the button with an ID of b_1 - # ff.button(:name, 'verify_data') # access the button with a name of verify_data - # ff.button(:value, 'Login') # access the button with a value (the text displayed on the button) of Login - # ff.button(:caption, 'Login') # same as above - # ff.button(:value, /Log/) # access the button that has text matching /Log/ - # ff.button(:index, 2) # access the second button on the page ( 1 based, so the first button is accessed with :index,1) - # -=end - -require 'firewatir/exceptions' - -module FireWatir - module Container - include FireWatir - include Watir::Exception - - # IP Address of the machine where the script is to be executed. Default to localhost. - MACHINE_IP = "127.0.0.1" - # Name of the variable with which window is identified in JSSh. - WINDOW_VAR = "window" - # Name of the variable with which browser is identified in JSSh. - BROWSER_VAR = "browser" - # Name of the variable with which document is identified in JSSh. - DOCUMENT_VAR = "document" - # Name of the variable with which body is identified in JSSh. - BODY_VAR = "body" - - - # The delay when entering text on a web page when speed = :slow. - DEFAULT_TYPING_SPEED = 0.01 - - # The default time we wait after a page has loaded when speed = :slow. - DEFAULT_SLEEP_TIME = 0.1 - - # The default color for highlighting objects as they are accessed. - DEFAULT_HIGHLIGHT_COLOR = "yellow" - - public - # - # Description: - # Used to access a frame element. Usually an <frame> or <iframe> HTML tag. - # - # Input: - # - how - The attribute used to identify the framet. - # - what - The value of that attribute. - # If only one parameter is supplied, "how" is by default taken as name and the - # parameter supplied becomes the value of the name attribute. - # - # Typical usage: - # - # ff.frame(:index, 1) - # ff.frame(:name , 'main_frame') - # ff.frame('main_frame') # in this case, just a name is supplied. - # - # Output: - # Frame object. - # - def frame(how, what = nil) - locate if defined?(locate) - if(what == nil) - what = how - how = :name - end - Frame.new(self, how, what) - end - - # - # Description: - # Used to access a form element. Usually an <form> HTML tag. - # - # Input: - # - how - The attribute used to identify the form. - # - what - The value of that attribute. - # If only one parameter is supplied, "how" is by default taken as name and the - # parameter supplied becomes the value of the name attribute. - # - # Typical usage: - # - # ff.form(:index, 1) - # ff.form(:name , 'main_form') - # ff.form('main_form') # in this case, just a name is supplied. - # - # Output: - # Form object. - # - def form(how, what=nil) - locate if defined?(locate) - if(what == nil) - what = how - how = :name - end - Form.new(self, how, what) - end - - # - # Description: - # Used to access a table. Usually an <table> HTML tag. - # - # Input: - # - how - The attribute used to identify the table. - # - what - The value of that attribute. - # - # Typical usage: - # - # ff.table(:index, 1) #index starts from 1. - # ff.table(:id, 'main_table') - # - # Output: - # Table object. - # - def table(how, what=nil) - locate if defined?(locate) - Table.new(self, how, what) - end - - # - # Description: - # Used to access a table cell. Usually an <td> HTML tag. - # - # Input: - # - how - The attribute used to identify the cell. - # - what - The value of that attribute. - # - # Typical Usage: - # ff.cell(:id, 'tb_cell') - # ff.cell(:index, 1) - # - # Output: - # TableCell Object - # - def cell(how, what=nil) - locate if defined?(locate) - TableCell.new(self, how, what) - end - - # - # Description: - # Used to access a table row. Usually an <tr> HTML tag. - # - # Input: - # - how - The attribute used to identify the row. - # - what - The value of that attribute. - # - # Typical Usage: - # ff.row(:id, 'tb_row') - # ff.row(:index, 1) - # - # Output: - # TableRow object - # - def row(how, what=nil) - locate if defined?(locate) - TableRow.new(self, how, what) - end - - # - # Description: - # Used to access a button element. Usually an <input type = "button"> HTML tag. - # - # Input: - # - how - The attribute used to identify the row. - # - what - The value of that attribute. - # - # Typical Usage: - # ff.button(:id, 'b_1') # access the button with an ID of b_1 - # ff.button(:name, 'verify_data') # access the button with a name of verify_data - # - # if only a single parameter is supplied, then :value is used as 'how' and parameter supplied is used as what. - # - # ff.button('Click Me') # access the button with a value of Click Me - # - # Output: - # Button element. - # - def button(how, what=nil) - locate if defined?(locate) - if what.nil? && String === how - what = how - how = :value - end - Button.new(self, how, what) - end - - # - # Description: - # Used for accessing a file field. Usually an <input type = file> HTML tag. - # - # Input: - # - how - Attribute used to identify the file field element - # - what - Value of that attribute. - # - # Typical Usage: - # ff.file_field(:id, 'up_1') # access the file upload fff.d with an ID of up_1 - # ff.file_field(:name, 'upload') # access the file upload fff.d with a name of upload - # - # Output: - # FileField object - # - def file_field(how, what = nil) - locate if defined?(locate) - FileField.new(self, how, what) - end - - # - # Description: - # Used for accessing a text field. Usually an <input type = text> HTML tag. or a text area - a <textarea> tag - # - # Input: - # - how - Attribute used to identify the text field element. - # - what - Value of that attribute. - # - # Typical Usage: - # - # ff.text_field(:id, 'user_name') # access the text field with an ID of user_name - # ff.text_field(:name, 'address') # access the text field with a name of address - # - # Output: - # TextField object. - # - def text_field(how, what = nil) - locate if defined?(locate) - TextField.new(self, how, what) - end - - # - # Description: - # Used to access hidden field element. Usually an <input type = hidden> HTML tag - # - # Input: - # - how - Attribute used to identify the hidden element. - # - what - Value of that attribute. - # - # Typical Usage: - # - # ff.hidden(:id, 'user_name') # access the hidden element with an ID of user_name - # ff.hidden(:name, 'address') # access the hidden element with a name of address - # - # Output: - # Hidden object. - # - def hidden(how, what=nil) - locate if defined?(locate) - return Hidden.new(self, how, what) - end - - # - # Description: - # Used to access select list element. Usually an <select> HTML tag. - # - # Input: - # - how - Attribute used to identify the select element. - # - what - Value of that attribute. - # - # Typical Usage: - # - # ff.select_list(:id, 'user_name') # access the select list with an ID of user_name - # ff.select_list(:name, 'address') # access the select list with a name of address - # - # Output: - # Select List object. - # - def select_list(how, what=nil) - locate if defined?(locate) - return SelectList.new(self, how, what) - end - - # - # Description: - # Used to access checkbox element. Usually an <input type = checkbox> HTML tag. - # - # Input: - # - how - Attribute used to identify the check box element. - # - what - Value of that attribute. - # - # Typical Usage: - # - # ff.checkbox(:id, 'user_name') # access the checkbox element with an ID of user_name - # ff.checkbox(:name, 'address') # access the checkbox element with a name of address - # In many instances, checkboxes on an html page have the same name, but are identified by different values. An example is shown next. - # - # <input type = checkbox name = email_frequency value = 'daily' > Daily Email - # <input type = checkbox name = email_frequency value = 'Weekly'> Weekly Email - # <input type = checkbox name = email_frequency value = 'monthly'>Monthly Email - # - # FireWatir can access these using the following: - # - # ff.checkbox(:id, 'day_to_send' , 'monday' ) # access the check box with an id of day_to_send and a value of monday - # ff.checkbox(:name ,'email_frequency', 'weekly') # access the check box with a name of email_frequency and a value of 'weekly' - # - # Output: - # Checkbox object. - # - def checkbox(how, what=nil, value = nil) - locate if defined?(locate) - return CheckBox.new(self, how, what, value) - end - - # - # Description: - # Used to access radio button element. Usually an <input type = radio> HTML tag. - # - # Input: - # - how - Attribute used to identify the radio button element. - # - what - Value of that attribute. - # - # Typical Usage: - # - # ff.radio(:id, 'user_name') # access the radio button element with an ID of user_name - # ff.radio(:name, 'address') # access the radio button element with a name of address - # In many instances, radio buttons on an html page have the same name, but are identified by different values. An example is shown next. - # - # <input type = radio name = email_frequency value = 'daily' > Daily Email - # <input type = radio name = email_frequency value = 'Weekly'> Weekly Email - # <input type = radio name = email_frequency value = 'monthly'>Monthly Email - # - # FireWatir can access these using the following: - # - # ff.radio(:id, 'day_to_send' , 'monday' ) # access the radio button with an id of day_to_send and a value of monday - # ff.radio(:name ,'email_frequency', 'weekly') # access the radio button with a name of email_frequency and a value of 'weekly' - # - # Output: - # Radio button object. - # - def radio(how, what=nil, value = nil) - locate if defined?(locate) - return Radio.new(self, how, what, value) - end - - # - # Description: - # Used to access link element. Usually an <a> HTML tag. - # - # Input: - # - how - Attribute used to identify the link element. - # - what - Value of that attribute. - # - # Typical Usage: - # - # ff.link(:id, 'user_name') # access the link element with an ID of user_name - # ff.link(:name, 'address') # access the link element with a name of address - # - # Output: - # Link object. - # - def link(how, what=nil) - locate if defined?(locate) - return Link.new(self, how, what) - end - - # - # Description: - # Used to access image element. Usually an <img> HTML tag. - # - # Input: - # - how - Attribute used to identify the image element. - # - what - Value of that attribute. - # - # Typical Usage: - # - # ff.image(:id, 'user_name') # access the image element with an ID of user_name - # ff.image(:name, 'address') # access the image element with a name of address - # - # Output: - # Image object. - # - def image(how, what = nil) - locate if defined?(locate) - Image.new(self, how, what) - end - - - - # Description: - # Searching for Page Elements. Not for external consumption. - # - # def ole_inner_elements - # return document.body.all - # end - # private :ole_inner_elements - - - # - # Description: - # This method shows the available objects on the current page. - # This is usually only used for debugging or writing new test scripts. - # This is a nice feature to help find out what HTML objects are on a page - # when developing a test case using FireWatir. - # - # Typical Usage: - # ff.show_all_objects - # - # Output: - # Prints all the available elements on the page. - # - def show_all_objects - puts "-----------Objects in the current context-------------" - locate if defined?(locate) - elements = Document.new(self).all - puts elements.length - elements.each do |n| - puts n.tagName - puts n.to_s - puts "------------------------------------------" - end - puts "Total number of objects in the current context : #{elements.length}" - return elements - # Test the index access. - # puts doc[35].to_s - end - - # evaluate javascript and return the result. - def js_eval javascript - javascript.gsub!("\n", "") - jssh_socket.send("#{javascript};\n", 0) - read_socket - end - - # evaluate the provides javascript method on the current object and return - # the result - def js_eval_method method_name - js_eval("#{element_object}.#{method_name}") - end - - def jssh_socket - $jssh_socket || @container.jssh_socket - end - - # - # Description: - # Reads the javascript execution result from the jssh socket. - # - # Input: - # - socket - It is the jssh socket, the only point of communication between the browser and firewatir scripts. - # - # Output: - # The javascript execution result as string. - # - def read_socket(socket = jssh_socket) - return_value = "" - data = "" - receive = true - #puts Thread.list - s = nil - while(s == nil) do - s = Kernel.select([socket] , nil , nil, 1) - end - #if(s != nil) - for stream in s[0] - data = stream.recv(1024) - #puts "data is : #{data}" - while(receive) - #while(data.length == 1024) - return_value += data - if(return_value.include?("\n> ")) - receive = false - else - data = stream.recv(1024) - end - #puts "return_value is : #{return_value}" - #puts "data length is : #{data.length}" - end - end - - # If received data is less than 1024 characters or for last data - # we read in the above loop - #return_value += data - - # Get the command prompt inserted by JSSH - #s = Kernel.select([socket] , nil , nil, 0.3) - - #if(s != nil) - # for stream in s[0] - # return_value += socket.recv(1024) - # end - #end - - length = return_value.length - #puts "Return value before removing command prompt is : #{return_value}" - - #Remove the command prompt. Every result returned by JSSH has "\n> " at the end. - if length <= 3 - return_value = "" - elsif(return_value[0..2] == "\n> ") - return_value = return_value[3..length-1] - else - #return_value = return_value[0..length-3] - return_value = return_value[0..length-4] - end - #puts "Return value after removing command prompt is : #{return_value}" - #socket.flush - - # make sure that command prompt doesn't get there. - if(return_value[return_value.length - 3..return_value.length - 1] == "\n> ") - return_value = return_value[0..return_value.length - 4] - end - if(return_value[0..2] == "\n> ") - return_value = return_value[3..return_value.length - 1] - end - #puts "return value is : #{return_value}" - return return_value - end - end -end # module - +=begin + # + # This module contains the factory methods that are used to access most html objects + # + # For example, to access a button on a web page that has the following html + # <input type = button name= 'b1' value='Click Me' onClick='javascript:doSomething()'> + # + # the following Firewatir code could be used + # + # ff.button(:name, 'b1').click + # + # or + # + # ff.button(:value, 'Click Me').to_s + # + # One can use any attribute to uniquely identify an element including the user defined attributes + # that is rendered on the HTML screen. Though, Attribute used to access an element depends on the type of element, + # attributes used frequently to address an element are listed below + # + # :index - find the item using the index in the container ( a container can be a document, + # a TableCell, a Span, a Div or a P) + # index is 1 based + # :name - find the item using the name attribute + # :id - find the item using the id attribute + # :value - find the item using the value attribute + # :caption - same as value + # :xpath - finds the item using xpath query + # + # Typical Usage + # + # ff.button(:id, 'b_1') # access the button with an ID of b_1 + # ff.button(:name, 'verify_data') # access the button with a name of verify_data + # ff.button(:value, 'Login') # access the button with a value (the text displayed on the button) of Login + # ff.button(:caption, 'Login') # same as above + # ff.button(:value, /Log/) # access the button that has text matching /Log/ + # ff.button(:index, 2) # access the second button on the page ( 1 based, so the first button is accessed with :index,1) + # +=end + +require 'firewatir/exceptions' + +module FireWatir + module Container + include FireWatir + include Watir::Exception + include JsshSocket + + # IP Address of the machine where the script is to be executed. Default to localhost. + MACHINE_IP = "127.0.0.1" + + # The default color for highlighting objects as they are accessed. + DEFAULT_HIGHLIGHT_COLOR = "yellow" + + public + # + # Description: + # Used to access a frame element. Usually an <frame> or <iframe> HTML tag. + # + # Input: + # - how - The attribute used to identify the framet. + # - what - The value of that attribute. + # If only one parameter is supplied, "how" is by default taken as name and the + # parameter supplied becomes the value of the name attribute. + # + # Typical usage: + # + # ff.frame(:index, 1) + # ff.frame(:name , 'main_frame') + # ff.frame('main_frame') # in this case, just a name is supplied. + # + # Output: + # Frame object. + # + def frame(how, what = nil) + locate if respond_to?(:locate) + if(what == nil) + what = how + how = :name + end + Frame.new(self, how, what) + end + + # + # Description: + # Used to access a form element. Usually an <form> HTML tag. + # + # Input: + # - how - The attribute used to identify the form. + # - what - The value of that attribute. + # If only one parameter is supplied, "how" is by default taken as name and the + # parameter supplied becomes the value of the name attribute. + # + # Typical usage: + # + # ff.form(:index, 1) + # ff.form(:name , 'main_form') + # ff.form('main_form') # in this case, just a name is supplied. + # + # Output: + # Form object. + # + def form(how, what=nil) + locate if respond_to?(:locate) + if(what == nil) + what = how + how = :name + end + Form.new(self, how, what) + end + + # + # Description: + # Used to access a table. Usually an <table> HTML tag. + # + # Input: + # - how - The attribute used to identify the table. + # - what - The value of that attribute. + # + # Typical usage: + # + # ff.table(:index, 1) #index starts from 1. + # ff.table(:id, 'main_table') + # + # Output: + # Table object. + # + def table(how, what=nil) + locate if respond_to?(:locate) + Table.new(self, how, what) + end + + # + # Description: + # Used to access a table cell. Usually an <td> HTML tag. + # + # Input: + # - how - The attribute used to identify the cell. + # - what - The value of that attribute. + # + # Typical Usage: + # ff.cell(:id, 'tb_cell') + # ff.cell(:index, 1) + # + # Output: + # TableCell Object + # + def cell(how, what=nil) + locate if respond_to?(:locate) + TableCell.new(self, how, what) + end + + # + # Description: + # Used to access a table row. Usually an <tr> HTML tag. + # + # Input: + # - how - The attribute used to identify the row. + # - what - The value of that attribute. + # + # Typical Usage: + # ff.row(:id, 'tb_row') + # ff.row(:index, 1) + # + # Output: + # TableRow object + # + def row(how, what=nil) + locate if respond_to?(:locate) + TableRow.new(self, how, what) + end + + # + # Description: + # Used to access a button element. Usually an <input type = "button"> HTML tag. + # + # Input: + # - how - The attribute used to identify the row. + # - what - The value of that attribute. + # + # Typical Usage: + # ff.button(:id, 'b_1') # access the button with an ID of b_1 + # ff.button(:name, 'verify_data') # access the button with a name of verify_data + # + # if only a single parameter is supplied, then :value is used as 'how' and parameter supplied is used as what. + # + # ff.button('Click Me') # access the button with a value of Click Me + # + # Output: + # Button element. + # + def button(how, what=nil) + locate if respond_to?(:locate) + if what.nil? && String === how + what = how + how = :value + end + Button.new(self, how, what) + end + + # + # Description: + # Used for accessing a file field. Usually an <input type = file> HTML tag. + # + # Input: + # - how - Attribute used to identify the file field element + # - what - Value of that attribute. + # + # Typical Usage: + # ff.file_field(:id, 'up_1') # access the file upload fff.d with an ID of up_1 + # ff.file_field(:name, 'upload') # access the file upload fff.d with a name of upload + # + # Output: + # FileField object + # + def file_field(how, what = nil) + locate if respond_to?(:locate) + FileField.new(self, how, what) + end + + # + # Description: + # Used for accessing a text field. Usually an <input type = text> HTML tag. or a text area - a <textarea> tag + # + # Input: + # - how - Attribute used to identify the text field element. + # - what - Value of that attribute. + # + # Typical Usage: + # + # ff.text_field(:id, 'user_name') # access the text field with an ID of user_name + # ff.text_field(:name, 'address') # access the text field with a name of address + # + # Output: + # TextField object. + # + def text_field(how, what = nil) + locate if respond_to?(:locate) + TextField.new(self, how, what) + end + + # + # Description: + # Used to access hidden field element. Usually an <input type = hidden> HTML tag + # + # Input: + # - how - Attribute used to identify the hidden element. + # - what - Value of that attribute. + # + # Typical Usage: + # + # ff.hidden(:id, 'user_name') # access the hidden element with an ID of user_name + # ff.hidden(:name, 'address') # access the hidden element with a name of address + # + # Output: + # Hidden object. + # + def hidden(how, what=nil) + locate if respond_to?(:locate) + return Hidden.new(self, how, what) + end + + # + # Description: + # Used to access select list element. Usually an <select> HTML tag. + # + # Input: + # - how - Attribute used to identify the select element. + # - what - Value of that attribute. + # + # Typical Usage: + # + # ff.select_list(:id, 'user_name') # access the select list with an ID of user_name + # ff.select_list(:name, 'address') # access the select list with a name of address + # + # Output: + # Select List object. + # + def select_list(how, what=nil) + locate if respond_to?(:locate) + return SelectList.new(self, how, what) + end + + # + # Description: + # Used to access checkbox element. Usually an <input type = checkbox> HTML tag. + # + # Input: + # - how - Attribute used to identify the check box element. + # - what - Value of that attribute. + # + # Typical Usage: + # + # ff.checkbox(:id, 'user_name') # access the checkbox element with an ID of user_name + # ff.checkbox(:name, 'address') # access the checkbox element with a name of address + # In many instances, checkboxes on an html page have the same name, but are identified by different values. An example is shown next. + # + # <input type = checkbox name = email_frequency value = 'daily' > Daily Email + # <input type = checkbox name = email_frequency value = 'Weekly'> Weekly Email + # <input type = checkbox name = email_frequency value = 'monthly'>Monthly Email + # + # FireWatir can access these using the following: + # + # ff.checkbox(:id, 'day_to_send' , 'monday' ) # access the check box with an id of day_to_send and a value of monday + # ff.checkbox(:name ,'email_frequency', 'weekly') # access the check box with a name of email_frequency and a value of 'weekly' + # + # Output: + # Checkbox object. + # + def checkbox(how, what=nil, value = nil) + locate if respond_to?(:locate) + return CheckBox.new(self, how, what, value) + end + + # + # Description: + # Used to access radio button element. Usually an <input type = radio> HTML tag. + # + # Input: + # - how - Attribute used to identify the radio button element. + # - what - Value of that attribute. + # + # Typical Usage: + # + # ff.radio(:id, 'user_name') # access the radio button element with an ID of user_name + # ff.radio(:name, 'address') # access the radio button element with a name of address + # In many instances, radio buttons on an html page have the same name, but are identified by different values. An example is shown next. + # + # <input type = radio name = email_frequency value = 'daily' > Daily Email + # <input type = radio name = email_frequency value = 'Weekly'> Weekly Email + # <input type = radio name = email_frequency value = 'monthly'>Monthly Email + # + # FireWatir can access these using the following: + # + # ff.radio(:id, 'day_to_send' , 'monday' ) # access the radio button with an id of day_to_send and a value of monday + # ff.radio(:name ,'email_frequency', 'weekly') # access the radio button with a name of email_frequency and a value of 'weekly' + # + # Output: + # Radio button object. + # + def radio(how, what=nil, value = nil) + locate if respond_to?(:locate) + return Radio.new(self, how, what, value) + end + + # + # Description: + # Used to access link element. Usually an <a> HTML tag. + # + # Input: + # - how - Attribute used to identify the link element. + # - what - Value of that attribute. + # + # Typical Usage: + # + # ff.link(:id, 'user_name') # access the link element with an ID of user_name + # ff.link(:name, 'address') # access the link element with a name of address + # + # Output: + # Link object. + # + def link(how, what=nil) + locate if respond_to?(:locate) + return Link.new(self, how, what) + end + + # + # Description: + # Used to access image element. Usually an <img> HTML tag. + # + # Input: + # - how - Attribute used to identify the image element. + # - what - Value of that attribute. + # + # Typical Usage: + # + # ff.image(:id, 'user_name') # access the image element with an ID of user_name + # ff.image(:name, 'address') # access the image element with a name of address + # + # Output: + # Image object. + # + def image(how, what = nil) + locate if respond_to?(:locate) + Image.new(self, how, what) + end + + + # + # Description: + # Used to access a definition list element - a <dl> HTML tag. + # + # Input: + # - how - Attribute used to identify the definition list element. + # - what - Value of that attribute. + # + # Typical Usage: + # + # ff.dl(:id, 'user_name') # access the dl element with an ID of user_name + # ff.dl(:title, 'address') # access the dl element with a title of address + # + # Returns: + # Dl object. + # + def dl(how, what = nil) + locate if respond_to?(:locate) + Dl.new(self, how, what) + end + + # + # Description: + # Used to access a definition term element - a <dt> HTML tag. + # + # Input: + # - how - Attribute used to identify the image element. + # - what - Value of that attribute. + # + # Typical Usage: + # + # ff.dt(:id, 'user_name') # access the dt element with an ID of user_name + # ff.dt(:title, 'address') # access the dt element with a title of address + # + # Returns: + # Dt object. + # + def dt(how, what = nil) + locate if respond_to?(:locate) + Dt.new(self, how, what) + end + + # + # Description: + # Used to access a definition description element - a <dd> HTML tag. + # + # Input: + # - how - Attribute used to identify the image element. + # - what - Value of that attribute. + # + # Typical Usage: + # + # ff.dd(:id, 'user_name') # access the dd element with an ID of user_name + # ff.dd(:title, 'address') # access the dd element with a title of address + # + # Returns: + # Dd object. + # + def dd(how, what = nil) + locate if respond_to?(:locate) + Dd.new(self, how, what) + end + + # Description: + # Searching for Page Elements. Not for external consumption. + # + # def ole_inner_elements + # return document.body.all + # end + # private :ole_inner_elements + + + # + # Description: + # This method shows the available objects on the current page. + # This is usually only used for debugging or writing new test scripts. + # This is a nice feature to help find out what HTML objects are on a page + # when developing a test case using FireWatir. + # + # Typical Usage: + # ff.show_all_objects + # + # Output: + # Prints all the available elements on the page. + # + def show_all_objects + puts "-----------Objects in the current context-------------" + locate if respond_to?(:locate) + elements = Document.new(self).all + puts elements.length + elements.each do |n| + puts n.tagName + puts n.to_s + puts "------------------------------------------" + end + puts "Total number of objects in the current context : #{elements.length}" + return elements + # Test the index access. + # puts doc[35].to_s + end + + end +end # module +