watir_robot 0.1.0
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.
- data/CHANGELOG +1 -0
 - data/KEYWORDS.rdoc +83 -0
 - data/LICENSE +24 -0
 - data/Manifest +28 -0
 - data/README.rdoc +116 -0
 - data/Rakefile +50 -0
 - data/lib/watir_robot.rb +56 -0
 - data/lib/watir_robot/exception.rb +76 -0
 - data/lib/watir_robot/keywords/browser.rb +317 -0
 - data/lib/watir_robot/keywords/button.rb +21 -0
 - data/lib/watir_robot/keywords/checkbox.rb +53 -0
 - data/lib/watir_robot/keywords/element.rb +95 -0
 - data/lib/watir_robot/keywords/file_field.rb +30 -0
 - data/lib/watir_robot/keywords/form.rb +143 -0
 - data/lib/watir_robot/keywords/image.rb +18 -0
 - data/lib/watir_robot/keywords/link.rb +21 -0
 - data/lib/watir_robot/keywords/list.rb +42 -0
 - data/lib/watir_robot/keywords/native.rb +148 -0
 - data/lib/watir_robot/keywords/page.rb +324 -0
 - data/lib/watir_robot/keywords/radio.rb +44 -0
 - data/lib/watir_robot/keywords/select.rb +82 -0
 - data/lib/watir_robot/keywords/table.rb +100 -0
 - data/lib/watir_robot/keywords/text_field.rb +69 -0
 - data/lib/watir_robot/parser.rb +170 -0
 - data/scripts/example_tests/resource.txt +14 -0
 - data/scripts/example_tests/test.txt +171 -0
 - data/scripts/run_server.rb +13 -0
 - data/watir_robot.gemspec +36 -0
 - metadata +152 -0
 
| 
         @@ -0,0 +1,100 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module WatirRobot
         
     | 
| 
      
 2 
     | 
    
         
            +
              
         
     | 
| 
      
 3 
     | 
    
         
            +
              #
         
     | 
| 
      
 4 
     | 
    
         
            +
              # Functionality related to HTMl tables, including headers, bodies, footers, and cells
         
     | 
| 
      
 5 
     | 
    
         
            +
              # 
         
     | 
| 
      
 6 
     | 
    
         
            +
              module Table
         
     | 
| 
      
 7 
     | 
    
         
            +
                
         
     | 
| 
      
 8 
     | 
    
         
            +
                ### Actions ###
         
     | 
| 
      
 9 
     | 
    
         
            +
                
         
     | 
| 
      
 10 
     | 
    
         
            +
                #
         
     | 
| 
      
 11 
     | 
    
         
            +
                # Get contents of a single table cell
         
     | 
| 
      
 12 
     | 
    
         
            +
                #
         
     | 
| 
      
 13 
     | 
    
         
            +
                # @param [String] loc attribute/value pairs that match an HTML element
         
     | 
| 
      
 14 
     | 
    
         
            +
                # @param [String] row with the top-most row as 1, the number of the row in question
         
     | 
| 
      
 15 
     | 
    
         
            +
                # @param [String] col with the left-most row as 1, the number of the column in question
         
     | 
| 
      
 16 
     | 
    
         
            +
                # @return [String] the text contained within the targeted table cell
         
     | 
| 
      
 17 
     | 
    
         
            +
                # 
         
     | 
| 
      
 18 
     | 
    
         
            +
                def get_table_cell(loc, row, col)
         
     | 
| 
      
 19 
     | 
    
         
            +
                  row = row.to_i - 1
         
     | 
| 
      
 20 
     | 
    
         
            +
                  col = col.to_i - 1
         
     | 
| 
      
 21 
     | 
    
         
            +
                  @browser.table(parse_location(loc))[row][col].text
         
     | 
| 
      
 22 
     | 
    
         
            +
                end
         
     | 
| 
      
 23 
     | 
    
         
            +
                
         
     | 
| 
      
 24 
     | 
    
         
            +
                
         
     | 
| 
      
 25 
     | 
    
         
            +
                ### Conditions ###
         
     | 
| 
      
 26 
     | 
    
         
            +
                
         
     | 
| 
      
 27 
     | 
    
         
            +
                #
         
     | 
| 
      
 28 
     | 
    
         
            +
                # Verify that table cell contains certain contents
         
     | 
| 
      
 29 
     | 
    
         
            +
                #
         
     | 
| 
      
 30 
     | 
    
         
            +
                # @param [String] loc attribute/value pairs that match an HTML element
         
     | 
| 
      
 31 
     | 
    
         
            +
                # @param [String] row with the top-most row as 1, the number of the row in question
         
     | 
| 
      
 32 
     | 
    
         
            +
                # @param [String] col with the left-most row as 1, the number of the column in question
         
     | 
| 
      
 33 
     | 
    
         
            +
                # @param [String] text the text to compare against
         
     | 
| 
      
 34 
     | 
    
         
            +
                # 
         
     | 
| 
      
 35 
     | 
    
         
            +
                def table_cell_should_contain(loc, row, col, text)
         
     | 
| 
      
 36 
     | 
    
         
            +
                  row = row.to_i - 1
         
     | 
| 
      
 37 
     | 
    
         
            +
                  col = col.to_i - 1
         
     | 
| 
      
 38 
     | 
    
         
            +
                  raise(ElementMatchError, "The table cell at row #{row} and column #{col}, located in the table at #{loc}, does not contain the text #{text}") unless
         
     | 
| 
      
 39 
     | 
    
         
            +
                    @browser.table(parse_location(loc))[row][col].text.include? text
         
     | 
| 
      
 40 
     | 
    
         
            +
                end
         
     | 
| 
      
 41 
     | 
    
         
            +
                
         
     | 
| 
      
 42 
     | 
    
         
            +
                #
         
     | 
| 
      
 43 
     | 
    
         
            +
                # Verify that a table column contains certain contents
         
     | 
| 
      
 44 
     | 
    
         
            +
                #
         
     | 
| 
      
 45 
     | 
    
         
            +
                # @param [String] loc attribute/value pairs that match an HTML element
         
     | 
| 
      
 46 
     | 
    
         
            +
                # @param [String] col with the left-most row as 1, the number of the column in question
         
     | 
| 
      
 47 
     | 
    
         
            +
                # @param [String] text the text to compare against
         
     | 
| 
      
 48 
     | 
    
         
            +
                # 
         
     | 
| 
      
 49 
     | 
    
         
            +
                def table_column_should_contain(loc, col, text)
         
     | 
| 
      
 50 
     | 
    
         
            +
                  # There's no "nice" way to do this, so we run through each row and snag
         
     | 
| 
      
 51 
     | 
    
         
            +
                  #   the cell at offset y
         
     | 
| 
      
 52 
     | 
    
         
            +
                  col = col.to_i - 1
         
     | 
| 
      
 53 
     | 
    
         
            +
                  content = ''
         
     | 
| 
      
 54 
     | 
    
         
            +
                  @browser.table(parse_location(loc)).rows.each do |row|
         
     | 
| 
      
 55 
     | 
    
         
            +
                    content << ' '
         
     | 
| 
      
 56 
     | 
    
         
            +
                    content << row[col].text
         
     | 
| 
      
 57 
     | 
    
         
            +
                  end
         
     | 
| 
      
 58 
     | 
    
         
            +
                  
         
     | 
| 
      
 59 
     | 
    
         
            +
                  raise(Exception::ElementMatchError, "The table column number #{c} in the table located at #{loc} does not contain the text #{text}") unless
         
     | 
| 
      
 60 
     | 
    
         
            +
                    content.include? text
         
     | 
| 
      
 61 
     | 
    
         
            +
                end
         
     | 
| 
      
 62 
     | 
    
         
            +
                
         
     | 
| 
      
 63 
     | 
    
         
            +
                #
         
     | 
| 
      
 64 
     | 
    
         
            +
                # Verify that a table's header contains certain contents
         
     | 
| 
      
 65 
     | 
    
         
            +
                #
         
     | 
| 
      
 66 
     | 
    
         
            +
                # @param [String] loc attribute/value pairs that match an HTML element
         
     | 
| 
      
 67 
     | 
    
         
            +
                # @param [String] text the text to compare against
         
     | 
| 
      
 68 
     | 
    
         
            +
                # 
         
     | 
| 
      
 69 
     | 
    
         
            +
                def table_header_should_contain(loc, text)
         
     | 
| 
      
 70 
     | 
    
         
            +
                  raise(Exception::ElementMatchError, "The table header of the table located at #{loc} does not contain the text #{text}") unless
         
     | 
| 
      
 71 
     | 
    
         
            +
                    @browser.table(parse_location(loc)).thead.text.include? text
         
     | 
| 
      
 72 
     | 
    
         
            +
                end
         
     | 
| 
      
 73 
     | 
    
         
            +
                
         
     | 
| 
      
 74 
     | 
    
         
            +
                #
         
     | 
| 
      
 75 
     | 
    
         
            +
                # Verify that a table row conatins certain contents
         
     | 
| 
      
 76 
     | 
    
         
            +
                #
         
     | 
| 
      
 77 
     | 
    
         
            +
                # @param [String] loc attribute/value pairs that match an HTML element
         
     | 
| 
      
 78 
     | 
    
         
            +
                # @param [String] row with the top-most row as 1, the number of the row in question
         
     | 
| 
      
 79 
     | 
    
         
            +
                # @param [String] text the text to compare against
         
     | 
| 
      
 80 
     | 
    
         
            +
                # 
         
     | 
| 
      
 81 
     | 
    
         
            +
                def table_row_should_contain(loc, row, text)
         
     | 
| 
      
 82 
     | 
    
         
            +
                  row = row.to_i - 1
         
     | 
| 
      
 83 
     | 
    
         
            +
                  raise(Exception::ElementMatchError, "The table row number #{row} in the table located at #{loc} does not contain the text #{text}") unless
         
     | 
| 
      
 84 
     | 
    
         
            +
                    @browser.table(parse_location(loc))[row].text.include? text
         
     | 
| 
      
 85 
     | 
    
         
            +
                end
         
     | 
| 
      
 86 
     | 
    
         
            +
                
         
     | 
| 
      
 87 
     | 
    
         
            +
                #
         
     | 
| 
      
 88 
     | 
    
         
            +
                # Verify that certain content is contained somewhere within an entire HTML table
         
     | 
| 
      
 89 
     | 
    
         
            +
                #
         
     | 
| 
      
 90 
     | 
    
         
            +
                # @param [String] loc attribute/value pairs that match an HTML element
         
     | 
| 
      
 91 
     | 
    
         
            +
                # @param [String] text the text to compare against
         
     | 
| 
      
 92 
     | 
    
         
            +
                # 
         
     | 
| 
      
 93 
     | 
    
         
            +
                def table_should_contain(loc, text)
         
     | 
| 
      
 94 
     | 
    
         
            +
                  raise(Exception::ElementMatchError, "The table located at #{loc} does not contain the text #{text}") unless
         
     | 
| 
      
 95 
     | 
    
         
            +
                    @browser.table(parse_location(loc)).text.include? text
         
     | 
| 
      
 96 
     | 
    
         
            +
                end
         
     | 
| 
      
 97 
     | 
    
         
            +
                
         
     | 
| 
      
 98 
     | 
    
         
            +
              end
         
     | 
| 
      
 99 
     | 
    
         
            +
              
         
     | 
| 
      
 100 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,69 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module WatirRobot
         
     | 
| 
      
 2 
     | 
    
         
            +
              
         
     | 
| 
      
 3 
     | 
    
         
            +
              #
         
     | 
| 
      
 4 
     | 
    
         
            +
              # Functionality related to text fields (+<input>+ of type text and password)
         
     | 
| 
      
 5 
     | 
    
         
            +
              # 
         
     | 
| 
      
 6 
     | 
    
         
            +
              module TextField
         
     | 
| 
      
 7 
     | 
    
         
            +
                
         
     | 
| 
      
 8 
     | 
    
         
            +
                ### Actions ###
         
     | 
| 
      
 9 
     | 
    
         
            +
                
         
     | 
| 
      
 10 
     | 
    
         
            +
                #
         
     | 
| 
      
 11 
     | 
    
         
            +
                # Focus cursor inside a textfield
         
     | 
| 
      
 12 
     | 
    
         
            +
                #
         
     | 
| 
      
 13 
     | 
    
         
            +
                # @param [String] loc attribute/value pairs that match an HTML element
         
     | 
| 
      
 14 
     | 
    
         
            +
                #
         
     | 
| 
      
 15 
     | 
    
         
            +
                def focus_textfield(loc)
         
     | 
| 
      
 16 
     | 
    
         
            +
                  @browser.text_field(parse_location(loc)).focus
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
      
 18 
     | 
    
         
            +
                
         
     | 
| 
      
 19 
     | 
    
         
            +
                #
         
     | 
| 
      
 20 
     | 
    
         
            +
                # Input text into a text field
         
     | 
| 
      
 21 
     | 
    
         
            +
                #
         
     | 
| 
      
 22 
     | 
    
         
            +
                # @param [String] loc attribute/value pairs that match an HTML element
         
     | 
| 
      
 23 
     | 
    
         
            +
                # @param [String] text the text to type into the field
         
     | 
| 
      
 24 
     | 
    
         
            +
                # 
         
     | 
| 
      
 25 
     | 
    
         
            +
                def input_text(loc, text)
         
     | 
| 
      
 26 
     | 
    
         
            +
                  @browser.text_field(parse_location(loc)).set text
         
     | 
| 
      
 27 
     | 
    
         
            +
                end
         
     | 
| 
      
 28 
     | 
    
         
            +
                
         
     | 
| 
      
 29 
     | 
    
         
            +
                #
         
     | 
| 
      
 30 
     | 
    
         
            +
                # Input a password into a password field.
         
     | 
| 
      
 31 
     | 
    
         
            +
                #
         
     | 
| 
      
 32 
     | 
    
         
            +
                # @note This value will not be logged.
         
     | 
| 
      
 33 
     | 
    
         
            +
                #
         
     | 
| 
      
 34 
     | 
    
         
            +
                # @param [String] loc attribute/value pairs that match an HTML element
         
     | 
| 
      
 35 
     | 
    
         
            +
                # @param [String] password the password to type into the field
         
     | 
| 
      
 36 
     | 
    
         
            +
                # 
         
     | 
| 
      
 37 
     | 
    
         
            +
                def input_password(loc, password)
         
     | 
| 
      
 38 
     | 
    
         
            +
                  # This will differ from input_text when logging is implemented
         
     | 
| 
      
 39 
     | 
    
         
            +
                  @browser.text_field(parse_location(loc)).set password
         
     | 
| 
      
 40 
     | 
    
         
            +
                end
         
     | 
| 
      
 41 
     | 
    
         
            +
                
         
     | 
| 
      
 42 
     | 
    
         
            +
                
         
     | 
| 
      
 43 
     | 
    
         
            +
                ### Conditions ###
         
     | 
| 
      
 44 
     | 
    
         
            +
                
         
     | 
| 
      
 45 
     | 
    
         
            +
                #
         
     | 
| 
      
 46 
     | 
    
         
            +
                # Verify that textfield's text contains the value
         
     | 
| 
      
 47 
     | 
    
         
            +
                #
         
     | 
| 
      
 48 
     | 
    
         
            +
                # @param [String] loc attribute/value pairs that match an HTML element
         
     | 
| 
      
 49 
     | 
    
         
            +
                # @param [String] text the text to type into the field
         
     | 
| 
      
 50 
     | 
    
         
            +
                # 
         
     | 
| 
      
 51 
     | 
    
         
            +
                def textfield_should_contain(loc, text)
         
     | 
| 
      
 52 
     | 
    
         
            +
                  raise(Exception::ElementMatchError, "The textfield located at #{loc} does not contain the text #{text}") unless
         
     | 
| 
      
 53 
     | 
    
         
            +
                    @browser.text_field(parse_location(loc)).value.include? text
         
     | 
| 
      
 54 
     | 
    
         
            +
                end
         
     | 
| 
      
 55 
     | 
    
         
            +
                
         
     | 
| 
      
 56 
     | 
    
         
            +
                #
         
     | 
| 
      
 57 
     | 
    
         
            +
                # Verify that textfield's text is the value
         
     | 
| 
      
 58 
     | 
    
         
            +
                #
         
     | 
| 
      
 59 
     | 
    
         
            +
                # @param [String] loc attribute/value pairs that match an HTML element
         
     | 
| 
      
 60 
     | 
    
         
            +
                # @param [String] text the text to compare against
         
     | 
| 
      
 61 
     | 
    
         
            +
                # 
         
     | 
| 
      
 62 
     | 
    
         
            +
                def textfield_should_be(loc, text)
         
     | 
| 
      
 63 
     | 
    
         
            +
                  raise(Exception::ElementMatchError, "The textfield located at #{loc} does not have text equal to #{text}") unless
         
     | 
| 
      
 64 
     | 
    
         
            +
                    @browser.text_field(parse_location(loc)).value == text
         
     | 
| 
      
 65 
     | 
    
         
            +
                end
         
     | 
| 
      
 66 
     | 
    
         
            +
                
         
     | 
| 
      
 67 
     | 
    
         
            +
              end
         
     | 
| 
      
 68 
     | 
    
         
            +
              
         
     | 
| 
      
 69 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,170 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module WatirRobot
         
     | 
| 
      
 2 
     | 
    
         
            +
              
         
     | 
| 
      
 3 
     | 
    
         
            +
              #
         
     | 
| 
      
 4 
     | 
    
         
            +
              # This module contains the functions necessary to convert arguments obtained
         
     | 
| 
      
 5 
     | 
    
         
            +
              # from Robot Framework tests and make them meaningful to the underlying
         
     | 
| 
      
 6 
     | 
    
         
            +
              # Watir-WebDriver code.
         
     | 
| 
      
 7 
     | 
    
         
            +
              # 
         
     | 
| 
      
 8 
     | 
    
         
            +
              module Parser
         
     | 
| 
      
 9 
     | 
    
         
            +
                
         
     | 
| 
      
 10 
     | 
    
         
            +
                #
         
     | 
| 
      
 11 
     | 
    
         
            +
                # Mapping of Unicode values to java.awt.event.KeyEvent constants
         
     | 
| 
      
 12 
     | 
    
         
            +
                #
         
     | 
| 
      
 13 
     | 
    
         
            +
                KEY_CONSTANTS = {
         
     | 
| 
      
 14 
     | 
    
         
            +
                  32 => ['VK_SPACE'],
         
     | 
| 
      
 15 
     | 
    
         
            +
                  33 => ['VK_EXCLAMATION_MARK'],
         
     | 
| 
      
 16 
     | 
    
         
            +
                  34 => ['VK_SHIFT', 'VK_QUOTE'],
         
     | 
| 
      
 17 
     | 
    
         
            +
                  35 => ['VK_SHIFT', 'VK_3'],
         
     | 
| 
      
 18 
     | 
    
         
            +
                  36 => ['VK_SHIFT', 'VK_4'],
         
     | 
| 
      
 19 
     | 
    
         
            +
                  38 => ['VK_AMPERSAND'],
         
     | 
| 
      
 20 
     | 
    
         
            +
                  39 => ['VK_QUOTE'],
         
     | 
| 
      
 21 
     | 
    
         
            +
                  40 => ['VK_SHIFT', 'VK_9'],
         
     | 
| 
      
 22 
     | 
    
         
            +
                  41 => ['VK_SHIFT', 'VK_0'],
         
     | 
| 
      
 23 
     | 
    
         
            +
                  42 => ['VK_ASTERISK'],
         
     | 
| 
      
 24 
     | 
    
         
            +
                  43 => ['VK_ADD'],
         
     | 
| 
      
 25 
     | 
    
         
            +
                  45 => ['VK_SUBTRACT'],
         
     | 
| 
      
 26 
     | 
    
         
            +
                  46 => ['VK_DECIMAL'],
         
     | 
| 
      
 27 
     | 
    
         
            +
                  47 => ['VK_SLASH'],
         
     | 
| 
      
 28 
     | 
    
         
            +
                  48 => ['VK_0'],
         
     | 
| 
      
 29 
     | 
    
         
            +
                  49 => ['VK_1'],
         
     | 
| 
      
 30 
     | 
    
         
            +
                  50 => ['VK_2'],
         
     | 
| 
      
 31 
     | 
    
         
            +
                  51 => ['VK_3'],
         
     | 
| 
      
 32 
     | 
    
         
            +
                  52 => ['VK_4'],
         
     | 
| 
      
 33 
     | 
    
         
            +
                  53 => ['VK_5'],
         
     | 
| 
      
 34 
     | 
    
         
            +
                  54 => ['VK_6'],
         
     | 
| 
      
 35 
     | 
    
         
            +
                  55 => ['VK_7'],
         
     | 
| 
      
 36 
     | 
    
         
            +
                  56 => ['VK_8'],
         
     | 
| 
      
 37 
     | 
    
         
            +
                  57 => ['VK_9'],
         
     | 
| 
      
 38 
     | 
    
         
            +
                  58 => ['VK_SHIFT', 'VK_SEMICOLON'],
         
     | 
| 
      
 39 
     | 
    
         
            +
                  59 => ['VK_SEMICOLON'],
         
     | 
| 
      
 40 
     | 
    
         
            +
                  60 => ['VK_SHIFT', 'VK_COMMA'],
         
     | 
| 
      
 41 
     | 
    
         
            +
                  61 => ['VK_EQUALS'],
         
     | 
| 
      
 42 
     | 
    
         
            +
                  62 => ['VK_SHIFT', 'VK_DECIMAL'],
         
     | 
| 
      
 43 
     | 
    
         
            +
                  64 => ['VK_AT'],
         
     | 
| 
      
 44 
     | 
    
         
            +
                  65 => ['VK_SHIFT', 'VK_A'],
         
     | 
| 
      
 45 
     | 
    
         
            +
                  66 => ['VK_SHIFT', 'VK_B'],
         
     | 
| 
      
 46 
     | 
    
         
            +
                  67 => ['VK_SHIFT', 'VK_C'],
         
     | 
| 
      
 47 
     | 
    
         
            +
                  68 => ['VK_SHIFT', 'VK_D'],
         
     | 
| 
      
 48 
     | 
    
         
            +
                  69 => ['VK_SHIFT', 'VK_E'],
         
     | 
| 
      
 49 
     | 
    
         
            +
                  70 => ['VK_SHIFT', 'VK_F'],
         
     | 
| 
      
 50 
     | 
    
         
            +
                  71 => ['VK_SHIFT', 'VK_G'],
         
     | 
| 
      
 51 
     | 
    
         
            +
                  72 => ['VK_SHIFT', 'VK_H'],
         
     | 
| 
      
 52 
     | 
    
         
            +
                  73 => ['VK_SHIFT', 'VK_I'],
         
     | 
| 
      
 53 
     | 
    
         
            +
                  74 => ['VK_SHIFT', 'VK_J'],
         
     | 
| 
      
 54 
     | 
    
         
            +
                  75 => ['VK_SHIFT', 'VK_K'],
         
     | 
| 
      
 55 
     | 
    
         
            +
                  76 => ['VK_SHIFT', 'VK_L'],
         
     | 
| 
      
 56 
     | 
    
         
            +
                  77 => ['VK_SHIFT', 'VK_M'],
         
     | 
| 
      
 57 
     | 
    
         
            +
                  78 => ['VK_SHIFT', 'VK_N'],
         
     | 
| 
      
 58 
     | 
    
         
            +
                  79 => ['VK_SHIFT', 'VK_O'],
         
     | 
| 
      
 59 
     | 
    
         
            +
                  80 => ['VK_SHIFT', 'VK_P'],
         
     | 
| 
      
 60 
     | 
    
         
            +
                  81 => ['VK_SHIFT', 'VK_Q'],
         
     | 
| 
      
 61 
     | 
    
         
            +
                  82 => ['VK_SHIFT', 'VK_R'],
         
     | 
| 
      
 62 
     | 
    
         
            +
                  83 => ['VK_SHIFT', 'VK_S'],
         
     | 
| 
      
 63 
     | 
    
         
            +
                  84 => ['VK_SHIFT', 'VK_T'],
         
     | 
| 
      
 64 
     | 
    
         
            +
                  85 => ['VK_SHIFT', 'VK_U'],
         
     | 
| 
      
 65 
     | 
    
         
            +
                  86 => ['VK_SHIFT', 'VK_V'],
         
     | 
| 
      
 66 
     | 
    
         
            +
                  87 => ['VK_SHIFT', 'VK_W'],
         
     | 
| 
      
 67 
     | 
    
         
            +
                  88 => ['VK_SHIFT', 'VK_X'],
         
     | 
| 
      
 68 
     | 
    
         
            +
                  89 => ['VK_SHIFT', 'VK_Y'],
         
     | 
| 
      
 69 
     | 
    
         
            +
                  90 => ['VK_SHIFT', 'VK_Z'],
         
     | 
| 
      
 70 
     | 
    
         
            +
                  91 => ['VK_OPEN_BRACKET'],
         
     | 
| 
      
 71 
     | 
    
         
            +
                  92 => ['VK_BACK_SLASH'],
         
     | 
| 
      
 72 
     | 
    
         
            +
                  93 => ['VK_CLOSE_BRACKET'],
         
     | 
| 
      
 73 
     | 
    
         
            +
                  94 => ['VK_SHIFT', 'VK_6'],
         
     | 
| 
      
 74 
     | 
    
         
            +
                  95 => ['VK_SHIFT', 'VK_SUBTRACT'],
         
     | 
| 
      
 75 
     | 
    
         
            +
                  96 => ['VK_BACK_QUOTE'],
         
     | 
| 
      
 76 
     | 
    
         
            +
                  97 => ['VK_A'],
         
     | 
| 
      
 77 
     | 
    
         
            +
                  98 => ['VK_B'],
         
     | 
| 
      
 78 
     | 
    
         
            +
                  99 => ['VK_C'],
         
     | 
| 
      
 79 
     | 
    
         
            +
                  100 => ['VK_D'],
         
     | 
| 
      
 80 
     | 
    
         
            +
                  101 => ['VK_E'],
         
     | 
| 
      
 81 
     | 
    
         
            +
                  102 => ['VK_F'],
         
     | 
| 
      
 82 
     | 
    
         
            +
                  103 => ['VK_G'],
         
     | 
| 
      
 83 
     | 
    
         
            +
                  104 => ['VK_H'],
         
     | 
| 
      
 84 
     | 
    
         
            +
                  105 => ['VK_I'],
         
     | 
| 
      
 85 
     | 
    
         
            +
                  106 => ['VK_J'],
         
     | 
| 
      
 86 
     | 
    
         
            +
                  107 => ['VK_K'],
         
     | 
| 
      
 87 
     | 
    
         
            +
                  108 => ['VK_L'],
         
     | 
| 
      
 88 
     | 
    
         
            +
                  109 => ['VK_M'],
         
     | 
| 
      
 89 
     | 
    
         
            +
                  110 => ['VK_N'],
         
     | 
| 
      
 90 
     | 
    
         
            +
                  111 => ['VK_O'],
         
     | 
| 
      
 91 
     | 
    
         
            +
                  112 => ['VK_P'],
         
     | 
| 
      
 92 
     | 
    
         
            +
                  113 => ['VK_Q'],
         
     | 
| 
      
 93 
     | 
    
         
            +
                  114 => ['VK_R'],
         
     | 
| 
      
 94 
     | 
    
         
            +
                  115 => ['VK_S'],
         
     | 
| 
      
 95 
     | 
    
         
            +
                  116 => ['VK_T'],
         
     | 
| 
      
 96 
     | 
    
         
            +
                  117 => ['VK_U'],
         
     | 
| 
      
 97 
     | 
    
         
            +
                  118 => ['VK_V'],
         
     | 
| 
      
 98 
     | 
    
         
            +
                  119 => ['VK_W'],
         
     | 
| 
      
 99 
     | 
    
         
            +
                  120 => ['VK_X'],
         
     | 
| 
      
 100 
     | 
    
         
            +
                  121 => ['VK_Y'],
         
     | 
| 
      
 101 
     | 
    
         
            +
                  122 => ['VK_Z'],
         
     | 
| 
      
 102 
     | 
    
         
            +
                  123 => ['VK_SHIFT', 'VK_OPEN_BRACKET'],
         
     | 
| 
      
 103 
     | 
    
         
            +
                  125 => ['VK_SHIFT', 'VK_CLOSE_BRACKET'],
         
     | 
| 
      
 104 
     | 
    
         
            +
                }
         
     | 
| 
      
 105 
     | 
    
         
            +
              
         
     | 
| 
      
 106 
     | 
    
         
            +
                #
         
     | 
| 
      
 107 
     | 
    
         
            +
                # Parses the "location" string provided as argument for locating HTML elements.
         
     | 
| 
      
 108 
     | 
    
         
            +
                #
         
     | 
| 
      
 109 
     | 
    
         
            +
                # Watir-WebDriver expects a hash of parameters by which to search for HTML
         
     | 
| 
      
 110 
     | 
    
         
            +
                # elements. This function take arguments from Robot Framework tests in the
         
     | 
| 
      
 111 
     | 
    
         
            +
                # form of <tt>attribute=value</tt> and constructs a hash which
         
     | 
| 
      
 112 
     | 
    
         
            +
                # Watir-WebDriver can use to uniquely identify HTML elements on the page.
         
     | 
| 
      
 113 
     | 
    
         
            +
                #
         
     | 
| 
      
 114 
     | 
    
         
            +
                # @param [String] loc argument from Robot Framework to locate an HTML element
         
     | 
| 
      
 115 
     | 
    
         
            +
                # @return [Hash] a hash which Watir-WebDriver can use to locate an HTML element
         
     | 
| 
      
 116 
     | 
    
         
            +
                #
         
     | 
| 
      
 117 
     | 
    
         
            +
                def parse_location(loc)
         
     | 
| 
      
 118 
     | 
    
         
            +
                  loc = self.trim_sides(loc)
         
     | 
| 
      
 119 
     | 
    
         
            +
                  
         
     | 
| 
      
 120 
     | 
    
         
            +
                  if loc[0..3].downcase == 'css='
         
     | 
| 
      
 121 
     | 
    
         
            +
                    return {:css => loc[4..loc.length]}
         
     | 
| 
      
 122 
     | 
    
         
            +
                  elsif loc[0..5].downcase == 'xpath='
         
     | 
| 
      
 123 
     | 
    
         
            +
                    return {:xpath => loc[6..loc.length]}
         
     | 
| 
      
 124 
     | 
    
         
            +
                  else
         
     | 
| 
      
 125 
     | 
    
         
            +
                    # Comma-separated attributes
         
     | 
| 
      
 126 
     | 
    
         
            +
                    attr_list = loc.split(',')
         
     | 
| 
      
 127 
     | 
    
         
            +
                    attrs = {}
         
     | 
| 
      
 128 
     | 
    
         
            +
                    attr_list.each do |a|
         
     | 
| 
      
 129 
     | 
    
         
            +
                      attr_kv = a.split('=')
         
     | 
| 
      
 130 
     | 
    
         
            +
                      attrs[self.trim_sides(attr_kv[0])] = self.trim_sides(attr_kv[1])
         
     | 
| 
      
 131 
     | 
    
         
            +
                    end
         
     | 
| 
      
 132 
     | 
    
         
            +
                    # Watir expects symbols for keys
         
     | 
| 
      
 133 
     | 
    
         
            +
                    attrs = Hash[attrs.map { |k, v| [k.to_sym, v] }]
         
     | 
| 
      
 134 
     | 
    
         
            +
                    if attrs.key? :id
         
     | 
| 
      
 135 
     | 
    
         
            +
                      attrs.delete_if {|k, v| k != :id}
         
     | 
| 
      
 136 
     | 
    
         
            +
                    end
         
     | 
| 
      
 137 
     | 
    
         
            +
                    return attrs
         
     | 
| 
      
 138 
     | 
    
         
            +
                  end
         
     | 
| 
      
 139 
     | 
    
         
            +
                end
         
     | 
| 
      
 140 
     | 
    
         
            +
                
         
     | 
| 
      
 141 
     | 
    
         
            +
                #
         
     | 
| 
      
 142 
     | 
    
         
            +
                # Parses a key-code argument, provided as an actual character or in ASCII code
         
     | 
| 
      
 143 
     | 
    
         
            +
                #
         
     | 
| 
      
 144 
     | 
    
         
            +
                # @param [String] key the key for which to find the java.awt.KeyEvent key-code constant
         
     | 
| 
      
 145 
     | 
    
         
            +
                # @return [String] the constant for the key event
         
     | 
| 
      
 146 
     | 
    
         
            +
                #
         
     | 
| 
      
 147 
     | 
    
         
            +
                def parse_key_code(key)
         
     | 
| 
      
 148 
     | 
    
         
            +
                  if key[0..5].downcase = 'ascii='
         
     | 
| 
      
 149 
     | 
    
         
            +
                    # return the ASCII code directly
         
     | 
| 
      
 150 
     | 
    
         
            +
                    return key[6..key.length]
         
     | 
| 
      
 151 
     | 
    
         
            +
                  else
         
     | 
| 
      
 152 
     | 
    
         
            +
                    # we assume it's a character and try to map it to a constant
         
     | 
| 
      
 153 
     | 
    
         
            +
                  end
         
     | 
| 
      
 154 
     | 
    
         
            +
                end
         
     | 
| 
      
 155 
     | 
    
         
            +
                
         
     | 
| 
      
 156 
     | 
    
         
            +
                #
         
     | 
| 
      
 157 
     | 
    
         
            +
                # Small utility for trimming whitespace from both sides of a string
         
     | 
| 
      
 158 
     | 
    
         
            +
                #
         
     | 
| 
      
 159 
     | 
    
         
            +
                # @param [String] s string to trim both sides of
         
     | 
| 
      
 160 
     | 
    
         
            +
                # @return [Strgin] the same string without whitespace on the left or right sides
         
     | 
| 
      
 161 
     | 
    
         
            +
                #
         
     | 
| 
      
 162 
     | 
    
         
            +
                def trim_sides(s)
         
     | 
| 
      
 163 
     | 
    
         
            +
                  s = s.lstrip
         
     | 
| 
      
 164 
     | 
    
         
            +
                  s = s.rstrip
         
     | 
| 
      
 165 
     | 
    
         
            +
                  return s
         
     | 
| 
      
 166 
     | 
    
         
            +
                end
         
     | 
| 
      
 167 
     | 
    
         
            +
                
         
     | 
| 
      
 168 
     | 
    
         
            +
              end
         
     | 
| 
      
 169 
     | 
    
         
            +
             
     | 
| 
      
 170 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,14 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            *** Settings ***
         
     | 
| 
      
 2 
     | 
    
         
            +
            Library         Remote  http://localhost:8270
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            *** Variables ***
         
     | 
| 
      
 5 
     | 
    
         
            +
            ${BROWSER}  firefox
         
     | 
| 
      
 6 
     | 
    
         
            +
            ${URL}  http://bit.ly/watir-example
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            *** Keywords ***
         
     | 
| 
      
 9 
     | 
    
         
            +
            Open and Maximize
         
     | 
| 
      
 10 
     | 
    
         
            +
                [Arguments]  ${url}  ${browser}=firefox
         
     | 
| 
      
 11 
     | 
    
         
            +
                [Documentation]  Open a browser to a specific URL and then maximize it to full-screen.
         
     | 
| 
      
 12 
     | 
    
         
            +
                Start Browser  ${URL}  ${BROWSER}
         
     | 
| 
      
 13 
     | 
    
         
            +
                Maximize Browser Window
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,171 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            *** Settings ***
         
     | 
| 
      
 2 
     | 
    
         
            +
            Suite Setup     Open and Maximize  ${URL}  ${BROWSER}
         
     | 
| 
      
 3 
     | 
    
         
            +
            Suite Teardown  Close Browser
         
     | 
| 
      
 4 
     | 
    
         
            +
            Library         Remote  http://localhost:8270
         
     | 
| 
      
 5 
     | 
    
         
            +
            Resource        resource.txt
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            *** Test Cases ***
         
     | 
| 
      
 8 
     | 
    
         
            +
            Test Browser
         
     | 
| 
      
 9 
     | 
    
         
            +
                [Setup]  Go To  ${URL}
         
     | 
| 
      
 10 
     | 
    
         
            +
                Url Should Contain  google.com
         
     | 
| 
      
 11 
     | 
    
         
            +
                ${current_url}=  Get Url
         
     | 
| 
      
 12 
     | 
    
         
            +
                Go To  http://psd.tutsplus.com
         
     | 
| 
      
 13 
     | 
    
         
            +
                Url Should Be  http://psd.tutsplus.com/
         
     | 
| 
      
 14 
     | 
    
         
            +
                Go Back
         
     | 
| 
      
 15 
     | 
    
         
            +
                Go Forward
         
     | 
| 
      
 16 
     | 
    
         
            +
                Refresh
         
     | 
| 
      
 17 
     | 
    
         
            +
                Click Image  alt=Photoshop to HTML
         
     | 
| 
      
 18 
     | 
    
         
            +
                Switch To Next Window
         
     | 
| 
      
 19 
     | 
    
         
            +
                Title Should Be  Photoshop to HTML | Rockable Press
         
     | 
| 
      
 20 
     | 
    
         
            +
                Switch To Previous Window
         
     | 
| 
      
 21 
     | 
    
         
            +
                Title Should Contain  Psdtuts+
         
     | 
| 
      
 22 
     | 
    
         
            +
                Switch to Window  url=http://rockablepress.com/books/photoshop-to-html/
         
     | 
| 
      
 23 
     | 
    
         
            +
                Url Should Contain  rockablepress.com
         
     | 
| 
      
 24 
     | 
    
         
            +
                Switch to Window  url=http://psd.tutsplus.com/
         
     | 
| 
      
 25 
     | 
    
         
            +
                Close Window  2
         
     | 
| 
      
 26 
     | 
    
         
            +
                ${windows}=  Get Window Count
         
     | 
| 
      
 27 
     | 
    
         
            +
                ${current_url}=  Get Url
         
     | 
| 
      
 28 
     | 
    
         
            +
                Click Link  href=http://rockablepress.com/books/photoshop-to-html/
         
     | 
| 
      
 29 
     | 
    
         
            +
                ${windows}=  Get Window Count
         
     | 
| 
      
 30 
     | 
    
         
            +
                Switch to Next Window
         
     | 
| 
      
 31 
     | 
    
         
            +
                Title Should Be  Photoshop to HTML | Rockable Press
         
     | 
| 
      
 32 
     | 
    
         
            +
                ${windows}=  Get Window Count
         
     | 
| 
      
 33 
     | 
    
         
            +
                Close Window  url=http://rockablepress.com/books/photoshop-to-html/
         
     | 
| 
      
 34 
     | 
    
         
            +
                Title Should Contain  Psdtuts+
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            Test Button
         
     | 
| 
      
 37 
     | 
    
         
            +
                [Setup]  Go To  ${URL}
         
     | 
| 
      
 38 
     | 
    
         
            +
                Click Button  value=Submit
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
            Test CheckBox
         
     | 
| 
      
 41 
     | 
    
         
            +
                [Setup]  Go To  ${URL}
         
     | 
| 
      
 42 
     | 
    
         
            +
                Select Checkbox  value=Ruby
         
     | 
| 
      
 43 
     | 
    
         
            +
                Checkbox Should Be Selected  value=Ruby
         
     | 
| 
      
 44 
     | 
    
         
            +
                Unselect Checkbox  value=Ruby
         
     | 
| 
      
 45 
     | 
    
         
            +
                Checkbox Should Not Be Selected  value=Ruby
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
            Test Element
         
     | 
| 
      
 48 
     | 
    
         
            +
                [Setup]  Go To  ${URL}
         
     | 
| 
      
 49 
     | 
    
         
            +
                Click Element  name=submit
         
     | 
| 
      
 50 
     | 
    
         
            +
                Element Should Be Visible  class=errorheader
         
     | 
| 
      
 51 
     | 
    
         
            +
                Element Should Not Be Visible  name=backupCache
         
     | 
| 
      
 52 
     | 
    
         
            +
                Element Text Should Be  class=errorheader  Looks like you have a question or two that still needs to be filled out.
         
     | 
| 
      
 53 
     | 
    
         
            +
                Element Text Should Contain  class=errorheader  question or two
         
     | 
| 
      
 54 
     | 
    
         
            +
                Focus  name=entry.0.single
         
     | 
| 
      
 55 
     | 
    
         
            +
                Sleep  2 seconds
         
     | 
| 
      
 56 
     | 
    
         
            +
                ${attr}=  Get Element Attribute  id=ss-form  method
         
     | 
| 
      
 57 
     | 
    
         
            +
                ${text}=  Get Element Text  class=errorheader
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
            Test FileField
         
     | 
| 
      
 60 
     | 
    
         
            +
                Go To  http://scribd.com/upload/supload
         
     | 
| 
      
 61 
     | 
    
         
            +
                Choose File  name=upload_doc  C:/foobar.txt
         
     | 
| 
      
 62 
     | 
    
         
            +
                ${file}=  Get Filefield Path  name=upload_doc
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
            Test Form
         
     | 
| 
      
 65 
     | 
    
         
            +
                [Setup]  Go To  ${URL}
         
     | 
| 
      
 66 
     | 
    
         
            +
                Form Should Contain Button  id=ss-form  value=Submit
         
     | 
| 
      
 67 
     | 
    
         
            +
                Form Should Not Contain Button  id=ss-form  value=foobar
         
     | 
| 
      
 68 
     | 
    
         
            +
                Form Should Contain Checkbox  id=ss-form  value=Ruby
         
     | 
| 
      
 69 
     | 
    
         
            +
                Form Should Not Contain Checkbox  id=ss-form  value=foobar
         
     | 
| 
      
 70 
     | 
    
         
            +
                Go To  http://scribd.com/upload/supload
         
     | 
| 
      
 71 
     | 
    
         
            +
                Form Should Contain Filefield  name=upload_doc  id=file
         
     | 
| 
      
 72 
     | 
    
         
            +
                Form Should Not Contain Filefield  name=upload_doc  id=foobar
         
     | 
| 
      
 73 
     | 
    
         
            +
                Go Back
         
     | 
| 
      
 74 
     | 
    
         
            +
                Form Should Contain Radio Button  id=ss-form  value=Watir
         
     | 
| 
      
 75 
     | 
    
         
            +
                Form Should Not Contain Radio Button  id=ss-form  value=foobar
         
     | 
| 
      
 76 
     | 
    
         
            +
                Form Should Contain Select List  id=ss-form  id=entry_6
         
     | 
| 
      
 77 
     | 
    
         
            +
                Form Should Not Contain Select List  id=ss-form  id=foobar
         
     | 
| 
      
 78 
     | 
    
         
            +
                Form Should Contain Textfield  id=ss-form  id=entry_0
         
     | 
| 
      
 79 
     | 
    
         
            +
                Form Should Not Contain Textfield  id=ss-form  id=foobar
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
            Test Image
         
     | 
| 
      
 82 
     | 
    
         
            +
                [Setup]  Go To  ${URL}
         
     | 
| 
      
 83 
     | 
    
         
            +
                Go To  http://psd.tutsplus.com/
         
     | 
| 
      
 84 
     | 
    
         
            +
                Click Image  alt=Photoshop to HTML
         
     | 
| 
      
 85 
     | 
    
         
            +
                Switch To Window  title=Photoshop to HTML | Rockable Press
         
     | 
| 
      
 86 
     | 
    
         
            +
                Url Should Be  http://rockablepress.com/books/photoshop-to-html/
         
     | 
| 
      
 87 
     | 
    
         
            +
                ${count}=  Get Window Count
         
     | 
| 
      
 88 
     | 
    
         
            +
                Switch To Other Window
         
     | 
| 
      
 89 
     | 
    
         
            +
                Close Other Window
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
      
 91 
     | 
    
         
            +
            Test Link
         
     | 
| 
      
 92 
     | 
    
         
            +
                [Setup]  Go To  ${URL}
         
     | 
| 
      
 93 
     | 
    
         
            +
                Click Link  text=Terms of Service
         
     | 
| 
      
 94 
     | 
    
         
            +
                Url Should Be  http://www.google.com/accounts/TOS
         
     | 
| 
      
 95 
     | 
    
         
            +
                Go Back
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
            Test List
         
     | 
| 
      
 98 
     | 
    
         
            +
                [Setup]  Go To  ${URL}
         
     | 
| 
      
 99 
     | 
    
         
            +
                ${items}=  Get List Items  class=ss-choices
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
      
 101 
     | 
    
         
            +
            Test Native
         
     | 
| 
      
 102 
     | 
    
         
            +
                [Setup]  Go To  ${URL}
         
     | 
| 
      
 103 
     | 
    
         
            +
                Capture Screenshot
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
      
 105 
     | 
    
         
            +
            Test Page
         
     | 
| 
      
 106 
     | 
    
         
            +
                [Setup]  Go To  ${URL}
         
     | 
| 
      
 107 
     | 
    
         
            +
                Title Should Be  Watir Example
         
     | 
| 
      
 108 
     | 
    
         
            +
                ${source}=  Get Page Source
         
     | 
| 
      
 109 
     | 
    
         
            +
                Log Page Source
         
     | 
| 
      
 110 
     | 
    
         
            +
                ${text}=  Get Page Text
         
     | 
| 
      
 111 
     | 
    
         
            +
                ${status}=  Get Page Status
         
     | 
| 
      
 112 
     | 
    
         
            +
                ${title}=  Get Title
         
     | 
| 
      
 113 
     | 
    
         
            +
                ${all_links}=  Get All Elements By Xpath  //a
         
     | 
| 
      
 114 
     | 
    
         
            +
                Log  Executing JavaScript has been tested. It is simple wrapper around WebDriver's execute_script function, so if there's a problem, it's at the WebDriver level.
         
     | 
| 
      
 115 
     | 
    
         
            +
                Page Should Contain  What testing tool do you like?
         
     | 
| 
      
 116 
     | 
    
         
            +
                Page Should Not Contain  Supercalafragilisticexbialadocious
         
     | 
| 
      
 117 
     | 
    
         
            +
                Page Should Contain Button  value=Submit
         
     | 
| 
      
 118 
     | 
    
         
            +
                Page Should Not Contain Button  value=Foobar
         
     | 
| 
      
 119 
     | 
    
         
            +
                Page Should Contain Checkbox  value=Ruby
         
     | 
| 
      
 120 
     | 
    
         
            +
                Page Should Not Contain Checkbox  value=Clojure
         
     | 
| 
      
 121 
     | 
    
         
            +
                Page Should Contain Element  id=ss-form
         
     | 
| 
      
 122 
     | 
    
         
            +
                Page Should Not Contain Element  id=foobar
         
     | 
| 
      
 123 
     | 
    
         
            +
                Go To  http://www.google.com/
         
     | 
| 
      
 124 
     | 
    
         
            +
                Page Should Contain Image  src=/images/nav_logo29.png
         
     | 
| 
      
 125 
     | 
    
         
            +
                Page Should Not Contain Image  src=foobar
         
     | 
| 
      
 126 
     | 
    
         
            +
                Go Back
         
     | 
| 
      
 127 
     | 
    
         
            +
                Page Should Contain Link  href=http://docs.google.com
         
     | 
| 
      
 128 
     | 
    
         
            +
                Page Should Not Contain Link  href=foobar
         
     | 
| 
      
 129 
     | 
    
         
            +
                Page Should Contain List  class=ss-choices  false
         
     | 
| 
      
 130 
     | 
    
         
            +
                Page Should Not Contain List  class=foobar
         
     | 
| 
      
 131 
     | 
    
         
            +
                Page Should Contain Radio Button  value=Watir
         
     | 
| 
      
 132 
     | 
    
         
            +
                Page Should Not Contain Radio Button  value=foobar
         
     | 
| 
      
 133 
     | 
    
         
            +
                Page Should Contain Textfield  name=entry.0.single
         
     | 
| 
      
 134 
     | 
    
         
            +
                Page Should Not Contain Textfield  name=foobar
         
     | 
| 
      
 135 
     | 
    
         
            +
                Title Should Be  Watir Example
         
     | 
| 
      
 136 
     | 
    
         
            +
                Title Should Contain  Watir
         
     | 
| 
      
 137 
     | 
    
         
            +
             
     | 
| 
      
 138 
     | 
    
         
            +
            Test Radio
         
     | 
| 
      
 139 
     | 
    
         
            +
                [Setup]  Go To  ${URL}
         
     | 
| 
      
 140 
     | 
    
         
            +
                Select Radio Button  value=Watir
         
     | 
| 
      
 141 
     | 
    
         
            +
                Radio Button Should Be Selected  value=Watir
         
     | 
| 
      
 142 
     | 
    
         
            +
                Radio Button Should Not Be Selected  value=Selenium
         
     | 
| 
      
 143 
     | 
    
         
            +
             
     | 
| 
      
 144 
     | 
    
         
            +
            Test Select
         
     | 
| 
      
 145 
     | 
    
         
            +
                [Setup]  Go To  ${URL}
         
     | 
| 
      
 146 
     | 
    
         
            +
                Go to  http://drupal.org/project/issues/search/drupal
         
     | 
| 
      
 147 
     | 
    
         
            +
                Select Item From List  id=edit-status  text=active
         
     | 
| 
      
 148 
     | 
    
         
            +
                Item Should Be Selected  id=edit-status  text=active
         
     | 
| 
      
 149 
     | 
    
         
            +
                Item Should Not Be Selected  id=edit-status  text=needs work
         
     | 
| 
      
 150 
     | 
    
         
            +
                Select Item From List  id=edit-status  text=needs review
         
     | 
| 
      
 151 
     | 
    
         
            +
                Item Should Be Selected  id=edit-status  text=needs review
         
     | 
| 
      
 152 
     | 
    
         
            +
                Clear Items From List  id=edit-status
         
     | 
| 
      
 153 
     | 
    
         
            +
                Item should not be selected  id=edit-status  text=active
         
     | 
| 
      
 154 
     | 
    
         
            +
                Item should not be selected  id=edit-status  text=needs review
         
     | 
| 
      
 155 
     | 
    
         
            +
             
     | 
| 
      
 156 
     | 
    
         
            +
            Test Table
         
     | 
| 
      
 157 
     | 
    
         
            +
                [Setup]  Go To  ${URL}
         
     | 
| 
      
 158 
     | 
    
         
            +
                Go To  http://www.facebook.com
         
     | 
| 
      
 159 
     | 
    
         
            +
                ${cell_1}=  Get Table Cell  ${EMPTY}  1  1
         
     | 
| 
      
 160 
     | 
    
         
            +
                Table Cell Should Contain  ${EMPTY}  1  1  Email
         
     | 
| 
      
 161 
     | 
    
         
            +
                Table Column Should Contain  ${EMPTY}  1  logged in
         
     | 
| 
      
 162 
     | 
    
         
            +
                Table Row Should Contain  ${EMPTY}  3  your password?
         
     | 
| 
      
 163 
     | 
    
         
            +
                Table Should Contain  ${EMPTY}  Password
         
     | 
| 
      
 164 
     | 
    
         
            +
             
     | 
| 
      
 165 
     | 
    
         
            +
            Test TextField
         
     | 
| 
      
 166 
     | 
    
         
            +
                [Setup]  Go To  ${URL}
         
     | 
| 
      
 167 
     | 
    
         
            +
                Focus TextField  name=entry.0.single
         
     | 
| 
      
 168 
     | 
    
         
            +
                Input Text  name=entry.0.single  Foobar
         
     | 
| 
      
 169 
     | 
    
         
            +
                Textfield Should Contain  name=entry.0.single  Foo
         
     | 
| 
      
 170 
     | 
    
         
            +
                Textfield Should Be  name=entry.0.single  Foobar
         
     | 
| 
      
 171 
     | 
    
         
            +
             
     |