
自动化基础知识演示教学.ppt
34页英文标题:20-30pt 字体:Arial中文标题:20-30pt字体:华文细黑加粗 首选颜色: R0G0 B0备选颜色: R255 G255 B255英文正文:18-20pt子目录(2-3级) :16pt 字体:Arial中文正文:18-20pt子目录(2-5级):16-20pt字体:华文细黑 首选颜色: :R0G0 B0备选颜色: R234 G87 B3自动化基础知识什么是功能自动化测试?•一般是指软件测试的自动化自动化测试可理解为测试过程自动化和测试结果分析自动化,包括测试活动的管理与实施、测试脚本的开发与执行•软件自动化测试模拟手动测试步骤,控制被测软件的执行,完成全自动或半自动测试的过程•全自动测试:指不需人工干预,由程序自动完成测试的全过程•半自动测试:指在测试过程中,需手动输入测试用例或选择测试路径,再由自动测试程序按照人工指定的要求完成自动测试为什么需要功能自动化测试?•删除功能手动测试自动化测试为什么需要功能自动化测试?•注意:自动化测试虽然具有很多优点,但它只是测试工作的一部分,是对手工测试的一种补充功能自动化测试前提条件如何实现功能自动化测试?•开源框架Selenium 2.0(WebDriver)、Watir等•商业工具QTP、Rational Robot、SilkTest等开源框架与商业工具比较•开源(如Selenium 2.0)•商业(如QTP)开源功能自动化框架比较Watir WebDriver•Watir WebDriver是Selenium WebDriver的一个封装,使得Selenium WebDriver的API更加友好,同时使用了Watir的API组织形式,使得代码更简洁和优雅。
Watir WebD• •当然,我们可以通过以下链接,非常方便的获取到当然,我们可以通过以下链接,非常方便的获取到Watir WebDriverWatir WebDriver的的APIAPI进行阅读进行阅读http://www.rubydoc.info/gems/watir-webdriver常用API介绍Browser•初始化浏览器browser = Watir::Browser.new :ie browser = Watir::Browser.new :ie # 其中,“:ie”表示IE浏览器,其他浏览器例如:“:chrome”,“:firefox”•访问站点browser.goto “url”browser.goto “url”•关闭浏览器browser.closebrowser.closeButton•按钮单击browser.button(:id => “btn”).clickbrowser.button(:id => “btn”).click•按钮双击browser.button(:id => “btn”).double_clickbrowser.button(:id => “btn”).double_click•按钮是否存在browser.button(:id => “btn”).exists?browser.button(:id => “btn”).exists? # 一般用于测试结果断言Check Box•复选框勾选复选框勾选browser.checkbox(:id => “cbx”).setbrowser.checkbox(:id => “cbx”).set•复选框取消勾选复选框取消勾选browser.checkbox(:id => “cbx”).clearbrowser.checkbox(:id => “cbx”).clear•复选框是否勾选复选框是否勾选browser.checkbox(:id => “cbx”). setbrowser.checkbox(:id => “cbx”). set? ? # 一般用于测试结果断言•复选框是否存在复选框是否存在browser.checkbox(:id => “cbx”). exists?browser.checkbox(:id => “cbx”). exists?Text Field•文本框设置值文本框设置值browser.text_field(:id => “txt”).set “value” browser.text_field(:id => “txt”).set “value” # 文本框自动清空,全量输入•文本框输入值文本框输入值browser.text_field(:id => “txt”).send_keys “value” browser.text_field(:id => “txt”).send_keys “value” # 文本框不清空,增量输入•是否存在是否存在browser.text_field(:id => “txt”).exists?browser.text_field(:id => “txt”).exists? # 一般用于测试结果断言Select L•下拉框根据值选择下拉框根据值选择browser.select_list(:id => sel”).select “value”browser.select_list(:id => sel”).select “value”•下拉框是否存在下拉框是否存在browser.select_list(:id => “sel”).existsbrowser.select_list(:id => “sel”).exists? ? # 一般用于测试结果断言Radio•单选框勾选单选框勾选browser.radio(:id => “ra”).setbrowser.radio(:id => “ra”).set•单选框是否勾选单选框是否勾选browser.radio(:id => “ra”).set? browser.radio(:id => “ra”).set? # 一般用于测试结果断言•是否存在是否存在browser.radio(:id => “ra”).exists? browser.radio(:id => “ra”).exists? # 一般用于测试结果断言L•超链接单击超链接单击browser.link(:id => “lnk”).clickbrowser.link(:id => “lnk”).click•超链接双击超链接双击browser.link(:id => “lnk”).double_clickbrowser.link(:id => “lnk”).double_click•是否存在是否存在browser.link(:id => “lnk”).exists? browser.link(:id => “lnk”).exists? # 一般用于测试结果断言如何定位元素?如何定位元素•使用使用id定位定位HTML代码: >Ruby代码:browser.text_field(:id => “txtBox1”).set “user”browser.text_field(:id => “txtBox1”).set “user”如何定位元素Page21•使用使用name定位定位HTML代码: >Ruby代码:browser.text_field(:name => “browser.text_field(:name => “usertxtBoxusertxtBox”).set “user””).set “user”如何定位元素•使用使用class定位定位HTML代码: >Ruby代码:browser.text_field(:class=> “browser.text_field(:class=> “csscss”).set “user””).set “user”如何定位元素Page23•使用使用xPath定位定位HTML代码: >Ruby代码:browser.text_field(:xpath => “//*[@id=‘txtBox1’]”).set “user”browser.text_field(:xpath => “//*[@id=‘txtBox1’]”).set “user”如何定位元素•使用多种方式相结合定位使用多种方式相结合定位HTML代码:
这时,很大的可能是该元素外部包围了frame我们可以通过下列方式定位Frame中的元素:HTML代码:Ruby代码:browser.frame(:name => “mainFrame”).text_field(:name => “usertxtBox”).set browser.frame(:name => “mainFrame”).text_field(:name => “usertxtBox”).set “user”“user”如何处理弹出的新浏览器•通过通过title定位定位browser.window(:title => "annoying popup").use dobrowser.window(:title => "annoying popup").use do browser.button(:id => "close").click browser.button(:id => "close").clickendend•获取最后一个窗口获取最后一个窗口browser.windows.last.use dobrowser.windows.last.use do browser.button(:id => "close").click browser.button(:id => "close").clickendend如何处理JS弹出窗口•Alert处理处理browser.alert do browser.alert do browser.button(:value => 'Alert').click browser.button(:value => 'Alert').click endend•Confirm处理处理browser.confirm(true) do browser.confirm(true) do browser.button(:value => 'Confirm').click browser.button(:value => 'Confirm').click endend断言断言在Ruby1.9以上版本中,内置了MiniTest库,主要用于单元测试,我们需要用它来进行TestCase生命周期的管理和结果的断言。
断言•MiniTest::Unit::TestCase类TestCase类提供了许多方法,我们一般会继承该类,并重写其中3个方法来搭建起一个测试用例,包括前置条件、操作步骤、预期结果、后置操作而在操作步骤中,利用Watir WebDriver提供的一系列方法模拟用户操作断言•MiniTest::Assertions类类Assertions类中包含了许多断言方法,具体可查看以下文档:http://ruby-doc.org/stdlib-2.0/libdoc/minitest/rdoc/MiniTest/Assertions.html•常用断言方法常用断言方法assert(test, msg = nil)assert(test, msg = nil)#当test返回true时,代表测试通过;#当test返回false时,代表测试不通过,此时会输出msgThanks!英文标题:20-30pt 字体:Arial中文标题:20-30pt字体:华文细黑加粗 首选颜色: R0G0 B0备选颜色: R255 G255 B255英文正文:18-20pt子目录(2-3级) :16pt 字体:Arial中文正文:18-20pt子目录(2-5级):16-20pt字体:华文细黑 首选颜色: :R0G0 B0备选颜色: R234 G87 B3此课件下载可自行编辑修改,仅供参考!此课件下载可自行编辑修改,仅供参考!感谢您的支持,我们努力做得更好!谢谢感谢您的支持,我们努力做得更好!谢谢。
