# feature tests for Buttons # revision: $Revision: 1.0 $ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') unless $SETUP_LOADED require 'unittests/setup' class TC_Buttons_XPath < Test::Unit::TestCase def setup goto_page("buttons1.html") end def test_properties assert_raises(UnknownObjectException) { browser.button(:xpath, "//input[@name='noName']").id } assert_raises(UnknownObjectException) { browser.button(:xpath, "//input[@name='noName']").name } assert_raises(UnknownObjectException) { browser.button(:xpath, "//input[@name='noName']").disabled } assert_raises(UnknownObjectException) { browser.button(:xpath, "//input[@name='noName']").type } assert_raises(UnknownObjectException) { browser.button(:xpath, "//input[@name='noName']").value } assert_equal("b1" , browser.button(:xpath, "//input[@id='b2']").name ) assert_equal("b2" , browser.button(:xpath, "//input[@id='b2']").id ) assert_equal("button" , browser.button(:xpath, "//input[@id='b2']").type ) end def test_button_using_default # since most of the time, a button will be accessed based on its caption, there is a default way of accessing it.... assert_raises(UnknownObjectException) { browser.button(:xpath, "//input[@value='Missing Caption']").click } browser.button(:xpath, "//input[@value='Click Me']").click assert(browser.text.include?("PASS") ) end def test_Button_click_only browser.button(:xpath, "//input[@value='Click Me']").click assert(browser.text.include?("PASS") ) end def test_button_click assert_raises(UnknownObjectException) { browser.button(:xpath, "//input[@value='Missing Caption']").click } assert_raises(UnknownObjectException) { browser.button(:xpath, "//input[@id='MissingId']").click } assert_raises(ObjectDisabledException , "ObjectDisabledException was supposed to be thrown" ) { browser.button(:xpath, "//input[@value='Disabled Button']").click } browser.button(:xpath, "//input[@value='Click Me']").click assert(browser.text.include?("PASS") ) end def test_Button_Exists assert(browser.button(:xpath, "//input[@value='Click Me']").exists?) assert(browser.button(:xpath, "//input[@value='Submit']").exists?) assert(browser.button(:xpath, "//input[@name='b1']").exists?) assert(browser.button(:xpath, "//input[@id='b2']").exists?) assert_false(browser.button(:xpath, "//input[@value='Missing Caption']").exists?) assert_false(browser.button(:xpath, "//input[@name='missingname']").exists?) assert_false(browser.button(:xpath, "//input[@id='missingid']").exists?) end tag_method :test_element_by_xpath_class, :fails_on_ie def test_element_by_xpath_class element = browser.element_by_xpath("//input[@value='Click Me']") assert_class element, 'Button' element = browser.element_by_xpath("//input[@value='Submit']") assert_class element, 'Button' element = browser.element_by_xpath("//input[@name='b1']") assert_class element, 'Button' element = browser.element_by_xpath("//input[@id='b2']") assert_class element, 'Button' # TODO: If object is not there this should return null #element = browser.element_by_xpath("//input[@value='Missing Caption']") #assert(element.instance_of?(Button),"element class should be #{Button}; got #{element.class}") #element = browser.element_by_xpath("//input[@name='missingname']") #assert(element.instance_of?(Button),"element class should be #{Button}; got #{element.class}") #element = browser.element_by_xpath("//input[@id='missingid']") #assert(element.instance_of?(Button),"element class should be #{Button}; got #{element.class}") end def test_Button_Enabled assert(browser.button(:xpath, "//input[@value='Click Me']").enabled?) assert_false(browser.button(:xpath, "//input[@value='Disabled Button']").enabled?) assert_false(browser.button(:xpath, "//input[@name='b4']").enabled?) assert_false(browser.button(:xpath, "//input[@id='b5']").enabled?) assert_raises(UnknownObjectException) { browser.button(:xpath, "//input[@name='noName']").enabled? } end end