您好,欢迎访问三七文档
内容摘要自动化测试简介自动化测试类型自动化测试优势、劣势自动化测试适用范围自动化测试工具Selenium简介自动化测试框架自动化测试简介自动化测试是使用自动化测试工具或编写代码来替代手工测试的测试类型。自动化测试只是辅助手工测试,并不能完全替代手工,自动化更多的是去做验证型测试而非探索性测试,目的是将手工测试从重复的劳动中脱离出来,节约时间、人力成本,并且在新增一个功能时,可以对其相关所有功能做回归测试,提高软件的质量。敏捷测试与自动化测试为什么引入自动化测试敏捷开发的最大特点是高速迭代,有周期性,并且能够及时、持续的响应客户的频繁反馈。伴随着频繁的迭代,测试人员需要频繁的重新进行测试。在此由于系统是不稳定的系统,也造成了测试的不稳定,我们不知道这次的故事是否会影响到系统的其他功能。在敏捷测试过程中,项目后期不会给予测试人员很多的集成测试时间,而且测试人员也无法在每次的迭代完成之后对之前的迭代进行回归测试,基于这一点,就需要自动化测试在每个迭代完成时对之前的迭代进行集成测试自动化测试类型UI自动化性能自动化接口自动化单元测试自动化自动化测试优势、劣势优势:节约人力,代码维护好,可自动执行节约时间,测试脚本可在晚上进行执行回归测试,提高软件质量代码可复用自动化测试优势、劣势劣势:代码维护成本高,对测试人员的要求高不易做探索性测试不适合频繁需求变更的项目自动化测试适用范围需求变更不频繁回归测试测试人员有一定的编码基础产品型项目,项目周期长重复工作量大自动化测试工具QTPselenium浏览器IE/FireFoxIE/FireFox/Chrome/Opera语言VBJava/python/ruby/C#等是否收费有破解版,有部分插件是需要收费的免费开源是否容易上手容易有代码基础的容易是否存在GUI存在不存在是否支持录制支持支持Selenium简介Selenium是一款基于web应用程序的开源测试工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。它支持Firefox、ie、Chrome等众多浏览器。它同时支持JAVA、C#、Ruby、Python、PHP、Perl等众多的主流语言。Selenium简介SeleniumCore:JavaScriptFrameworkSeleniumCore是Selenium的核心部分,它由一些纯js代码组成,可以运行在windows/linux的不同browser上,我们就是通过这些js代码,才可以实现程序对浏览器的控制。IDE:Firefox插件IDE是在core的基础上的一种应用,通过UI实现类似QTP/Winner的脚本录制回放功能;SeleniumIDE是通过监听用户对html页面的操作来录制脚本的,是真正能够监听用户对html页面的操作的录制工具Selenium简介RC(RemoteControl)SeleniumRC模式,是客户端利用各种编程语言,通过网络向SeleniumServer发送指令,SeleniumServer接收到测试指令后,启动浏览器并向其发出JavaScript调用实现对Html页面的全面追踪,并通过网络把执行结果返回给调用者SeleniumServer的实现原理是其打开浏览器时,把自己的JavaScript文件嵌入网页中。然后Selenium的网页通过frame嵌入目标网页。这样,就可以使用Selenium的JavaScript对象来控制目标网页Selenium简介WebDriverWebDriver启动目标浏览器,并绑定到指定端口。该启动的浏览器实例,做webdriver的remoteserver。Client端通过CommandExcuter发送HTTPRequest给remoteserver的侦听端口(通信协议:thewebriverwireprotocol)Remoteserver需要依赖原生的浏览器组件(如:IEDriver.dll,chromedriver.exe),来转化转化浏览器的native调用SeleniumRC与SeleniumWebdriverSeleniumRCSeleniumWebDriverSeleniumRC的结构复杂,因为服务器需要启动在开始试运行前。webdriver架构比SeleniumRC简单,因为它控制着从操作系统层面的浏览器。Selenium服务器充当浏览器和Selenese的命令之间的中间人webdriver直接相互作用,以在浏览器和使用浏览器的引擎进行控制。SeleniumRC的脚本执行速度较慢,因为它使用了Javascript来与RC互动webdriver的速度更快,因为它直接交互使用的浏览器。SeleniumRC不能支持无头,因为它需要一个真正的浏览器一起工作webdriver可以支持无头执行它是一个简单的API复杂,API相比,RC有点大不能测试移动应用程序可测试iPhone/Android应用程序Selenium安装(基于Python语言)下载并安装Pythonpython-2.7.10.msi配置python环境变量环境变量:Path变量值:C:\Python27下载setuptools【python基础包工具】pythoneasy_install.py安装pippythonsetup.pyinstall进入C:\Python27\ScriptsEasy_install.exepipSelenium安装(基于Python语言)安装selenium进入C:\Python27\Scripts,执行pipinstall-Uselenium安装java下载并安装selenium服务端selenium-server-standalone-2.39.0.jar在selenium-server-standalone-2.39.0.jar目录下执行:java-jarselenium-server-standalone-2.39.0.jar安装Chromedriver把chromedriver.exe放置到chrome安装目录下,并配置chromedriver.exe环境变量浏览器操作设置最大化driver.maximize_window()设置浏览器大小driver.set_window_size(宽,高)设置浏览器前进后退driver.back()driver.forward()关闭浏览器driver.quit()打开浏览器driver.get(“”)浏览器操作对象定位对象的定位和操作是自动化测试的核心部分,其中操作又是建立在定位的基础上,因此对象的定位又显得特别重要。对象的定位分为以下几种:IdNameClassnameTagnameLinktextXpath:部分浏览器会提供计算xpath的插件。(firefox、chrome)Cssselector对象定位-单个元素定位Id定位:find_element_by_id()Name定位:find_element_by_name()Classname定位:find_element_by_class_name()tagname定位:find_element_by_tag_name()linktext定位:find_element_by_link_text()find_element_by_partial_link_text()Xpath定位:find_element_by_xpath()cssselector定位:find_element_by_css_selector()对象定位-一组元素定位Id定位:find_elements_by_id()Name定位:find_elements_by_name()Classname定位:find_elements_by_class_name()tagname定位:find_elements_by_tag_name()linktext定位:find_elements_by_link_text()find_elements_by_partial_link_text()Xpath定位:find_elements_by_xpath()cssselector定位:find_elements_by_css_selector()对象定位对象的定位要依据idnamecssxpath的顺序进行定位id、name是最常用并且最容易的方式Css、xpath往往会与id、name配合使用Xpath是最脆弱的方式unitsServicescomponesui对象定位对象定位对象定位--id对象定位--name对象定位--xpath操作测试对象清除元素内容Clear()模拟按键输入Send_keys(“”)单击元素Click()提交表单Submit()获取大小Size获取文本内容Text获取相关属性值get_attribute(name)查看对象是否可见is_displayed()获取对象属性get_attribute()鼠标事件右击:context_click()双击:double_click()拖动:drag_and_drop(source,target)鼠标悬停:move_to_element()按下鼠标左键在一个元素上:click_and_hold()键盘事件send_keys(Keys.BACK_SPACE)删除键(BackSpace)send_keys(Keys.SPACE)空格键(Space)send_keys(Keys.TAB)制表键(Tab)send_keys(Keys.ESCAPE)回退键(Esc)send_keys(Keys.ENTER)回车键(Enter)send_keys(Keys.CONTROL,'a')全选(Ctrl+A)send_keys(Keys.CONTROL,'c')复制(Ctrl+C)send_keys(Keys.CONTROL,'x')剪切(Ctrl+X)send_keys(Keys.CONTROL,'v')粘贴(Ctrl+V)设置等待时间固定休眠时间Sleep(时间)超时等待,设置最长等待时间implicitly_wait(时间)设置每隔一段时间内检测当前页面元素是否存在WebDriverWait(driver,时间).until()WebDriverWait(driver,时间).until_not()层级定位元素有多层父元素,当定位子元素时需要先定位父元素,然后定位到子元素。driver.find_element_by_id('').find_element_by_link_text('')界面中多个frame,多个frame处于父级子级关系,先找到父级的frame1,再找到子级的frame2.(可通过frame的id及name进行定位)driver.switch_to_frame(“frame1)driver.switch_to_frame(frame2)窗口处理获取当前窗口current_window_handle获取所有窗口window_handles切换窗口switch_to_window(待切换窗口)对话框处理定位对话框alert=driver.switch_to_alert()获取对话框文本内容alert.text()点击对话框确认按钮alert.accept()点击对话框取消按钮alert.dismiss()下拉框处理htmlbodyselectid=optiontestonchange=updateShipping(options[selectedIndex]);name=optiontestoptionvalue=test1test1/optionoptio
本文标题:自动化测试(一)
链接地址:https://www.777doc.com/doc-20530 .html