# feature tests for Tables $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') unless $SETUP_LOADED require 'unittests/setup' class TC_Tables_XPath < Test::Unit::TestCase include Watir::Exception def setup goto_page "table1.html" end def test_Table_Exists assert_false(browser.table(:xpath , "//table[@id='missingTable']/").exists? ) assert(browser.table(:xpath , "//table[@id='t1']/").exists? ) end def test_rows assert_raises( UnknownObjectException ){ browser.table(:xpath , "//table[@id='missingTable']/").row_count } assert_equal( 5 , browser.table(:xpath , "//table[@id='t1']/").row_count) # 4 rows and a header end def test_dynamic_tables t = browser.table(:xpath , "//table[@id='t1']/") assert_equal( 5, t.row_count) browser.button(:xpath,"//input[@value='add row']/").click assert_equal( 6, t.row_count) end def test_columns assert_raises( UnknownObjectException ){ browser.table(:xpath , "//table[@id='missingTable']/").column_count } assert_equal( 1 , browser.table(:xpath , "//table[@id='t1']/").column_count) # row one has 1 cell with a colspan of 2 end def test_links_and_images_in_table table = browser.table(:xpath , "//table[@id='pic_table']/") image = table[0][1].image(:index,0) assert_equal("106", image.width) link = table[0][3].link(:index,0) assert_equal("Google", link.innerText) end def test_table_from_element goto_page "simple_table_buttons.html" button = browser.button(:xpath , "//input[@id='b1']/") table = Watir::Table.create_from_element(browser,button) table[1][0].button(:index,0).click assert(browser.text_field(:name,"confirmtext").verify_contains(/CLICK2/i)) end def test_cell_directly assert( browser.cell(:xpath , "//td[@id='cell1']/").exists? ) assert_false( browser.cell(:xpath , "//td[@id='no_exist']/").exists? ) assert_equal( "Row 1 Col1", browser.cell(:xpath , "//td[@id='cell1']/").to_s.strip ) end def test_row_directly assert( browser.row(:xpath , "//tr[@id='row1']/").exists? ) assert_false( browser.row(:xpath , "//tr[@id='no_exist']/").exists? ) assert_equal('Row 2 Col1' , browser.row(:xpath , "//tr[@id='row1']/")[0].to_s.strip ) end def test_table_body assert_equal( 3, browser.table(:xpath , "//table[@id='body_test']/").bodies.length ) count = 1 browser.table(:xpath , "//table[@id='body_test']/").bodies.each do |n| # do something better here! # n.flash # this line commented out to speed up the test case count when 1 compare_text = "This text is in the FRST TBODY." when 2 compare_text = "This text is in the SECOND TBODY." when 3 compare_text = "This text is in the THIRD TBODY." end assert_equal( compare_text , n[0][0].to_s.strip ) # this is the 1st cell of the first row of this particular body count +=1 end assert_equal( count-1, browser.table(:xpath , "//table[@id='body_test']/").bodies.length ) assert_equal( "This text is in the THIRD TBODY." ,browser.table(:xpath , "//table[@id='body_test']/").body(:index,2)[0][0].to_s.strip ) # iterate through all the rows in a table body count = 1 browser.table(:xpath , "//table[@id='body_test']/").body(:index,1).each do | row | # row.flash # this line commented out, to speed up the tests if count == 1 assert_equal('This text is in the SECOND TBODY.' , row[0].text.strip ) elsif count == 1 assert_equal('This text is also in the SECOND TBODY.' , row[0].text.strip ) end count+=1 end end end