版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
AutomationTestTraining刘万红2015-08-15课程安排时间安排课程内容2015/08/229:30am—12:00am测试流程SecurityTesting2015/08/2213:00pm—18:00pm自动化测试理论Seleniumwebdriver2015/08/239:30am—12:00am自动化测试框架搭建2015/08/2313:00pm—18:00pm自动化测试框架使用目标一
本次培训目标:了解Selenium基本框架结构具备自动化测试思想
会搭建自动化测试环境了解selenium常用API了解自动化测试开展过程中的注意事项目标二
能够在原有框架基础上进行二次开发(框架升级维护和使用)具备安全性测试思想了解常见安全性问题类型原理会使用APPScan进行代码扫描并提交分析报告测试管理流程Q/A大纲一
自动化测试行业现状自动化测试投入产出分析
什么时候开展自动化测试
自动化测试最新的发展技术自动化测试工具比较
自动化测试环境搭建Selenium框架介绍Xpath基础介绍大纲二
小工具介绍Firebug/xpather/iedeveloperSelenium常用API现有框架详细解析自动化测试开展过程中的注意事项实战-搭建本公司自动化测试框架安全性测试介绍APPScan使用介绍测试管理流程
测试流程
发布流程:FATUAT点火堡垒测试(smoking)Baking(灰度)Rolling(Prod)质量报告
SecurityTestTraining2014重大安全事故
2014年2月比特币交易站受攻击破产2014年4月中国快递1400万信息泄露2014年5月22日,eBay要求近1.28亿活跃用户全部重新设置2014年9月,大约有500万谷歌的账户和密码的数据库被泄露密2014年12月25日,乌云漏洞报告平台报告称,大量12306用户数据在互联网疯传,内容包括用户帐号、明文密码、身份证号码、手机号码和电子邮箱等码安全测试测试经理以以及领导对对安全测试试要足够重重视安全测试也也要有测试试计划安全测试是是一个体系系,需要从从需求/设计/开发规范/编码到测试试一起努力力。从测试的角角度,必须须有部分手手工安全性性验证的case,有必要在在发布之前前建立安全全checklist代码扫描只只是安全测测试的一部部分工作开发团队要要有专人解解决安全性性问题安全测试case分层从测试工程程师角度去去设计Testcase:应用程序安安全测试(密码/权限划分/超时/代码扫描)操作系统安安全测试((帐号/文件服务/日志)数据库安全全测试(账账户/口令/IP限制/定期备份/演练方案))服务器安全全测试(日日志/补丁/身份验证/超时设置/跳板机)网络环境安安全测试((防火墙/网段/异地备份))安全性测试试常见安全问问题类型CSRF(Cross-siterequestforgery),跨站请请求伪造XSS又叫CSS(CrossSiteScript),跨站脚本本攻击SQLInjection(SQL注入)传输中与存存储时的密密码没有加加密,不不安全的通通信目录遍历缓冲区溢出出CSRF跨站请求伪伪造(英语:Cross-siterequestforgery),也被称称为one-clickattack或者sessionriding,通常缩写写为CSRF或者XSRF,是一种种挟制用户户在当前已已登录的Web应用程序上上执行非本本意的操作作的攻击方方法。跟跨跨网站脚本本(XSS)相比,XSS利用的是用用户对指定定网站的信信任,CSRF利用的是网网站对用户户网页浏览览器的信任任敏感页面要要采用https访问不要选择记记住密码XSSXSS又叫CSS(CrossSiteScript),跨站脚本攻攻击。它指的的是恶意攻击击者往Web页面里插入恶恶意脚本代码码,当用户浏浏览该页之时时,嵌入其中中Web里面的脚本代代码会被执行行,从而达到到恶意攻击用用户的特殊目目的。最常见见就是钓鱼网网站(在有漏漏洞的正规网网站上嵌入登登陆框套取账账户和密码))测试方法:在在输入框中输输入下列字符符,可直接输输入脚本来看看HTML标签:<…>…</…>转义字符:&(&);<(<);>(>); (空格);脚本语言:<script>alert(document.cookie);</script>特殊字符:‘
’<>/最小和最大的的长度是否允许空输输入对Grid、Label、Treeview类的输入框未未作验证,输输入的内容会会按照html语法解析出来来,要控制脚脚本注入的语语法要素。比比如:javascript离不开:“<”、“>”、“(”、“)”、“;”.在输入或输出出时对其进行行字符过滤或或转义处理SQLInjectionSQL注入是描述一一个利用写入入特殊SQL程序码攻击应应用程序的动动作,用户可可以提交一段段数据库查询询代码,根据据程序返回的的结果,获得得某些他想得得知的数据.只要是带有参参数的动态网网页且此网页页访问了数据据库,那么就就有可能存在在SQL注入例:一个验证证用户登陆的的页面,如果使用的sql语句为:Select*fromtableAwhereusername=’’+username+’’andpassword…..则在Sql语句后面输输入‘or1=1――就可以不输入入任何password进行攻击SELECTcount(*)FROMusers
WHEREusername='a'or'a'='a'ANDpassword='a'or'a'='a'解决方案:1、转义敏感字字符及字符串串,SQL的敏感字符包包括:”Union”,”cmd”,”+”,”//”,”..”,”;””,”‘”,”--”,”%”,””0x”,””><=!-*/()|”,和”空格”.
2、屏蔽出错信信息:阻止攻攻击者知道攻攻击的结果3、在服务端正正式处理之前前提交数据的的合法性(数据类型,数据长度,敏感字符的校校验)从测试人员的的角度来讲,在程序开发前前(即需求阶段),我们就应该有有意识的将安安全性检查查应用到需求求测试中,例如对一个表表单需求进行行检查时,我们一般检验验以下几项项安全
性问问题:
1、需求中应说说明表单中某某一FIELD的类型,长度,以及取值范围围(主要作用就是是禁止输入敏敏感字符)
2、需求中应说说明如果超出出表单规定的的类型,长度,以及取值范围围的,应用程序应给给出不
包含含任何代码或或数据库信息息的错误提示示.目录遍历举例:那现在把这个个URL改装装一下:/usr/local/apache/conf/里的所有文件件都出来了解决方案:1、限制Web应用在服务器器上的运行,,格设定WEB服务器的目录录访问权限22、进行严严格的输入验验证,控制用用户输入非法法路径,如在在每个目录访访问时有index.htm缓冲区溢出缓存溢出(Bufferoverflow)是指在存在缓缓存溢出安全全漏洞的计算算机中,攻击击者可以用超超出常规长度度的字符数来来填满一个域域,通常是内内存区地址。。在某些情况况下,这些过过量的字符能能够作为“可可执行”代码码来运行。从从而使得攻击击者可以不受受安全措施的的约束来控制制被攻击的计计算机。用户户使用缓冲区区溢出来破坏坏web应用程序的栈栈,通过发送送特别编写的的代码到web程序中,攻击击者可以让web应用程序来执执行任意代码码WEB服务器没有对对用户提交的的超长请求没没有进行合适适的处理,这这种请求可能能包括超长URL,超长HTTPHeader域,或者是其其它超长的数数据不安全的存储储/上传没有做过过滤如何测试:没没有加密关键键数据
例::view-source:http地址可以查看看源代码在在页面输入密密码,页面显显示的是*****,右键,查看源源不恰当的异常常处理分析:程序在在抛出异常的的时候给出了了比较详细的的内部错误信信息,,暴露了不应应该显示的执执行细节,网网站存在潜在在漏洞,文件就可以看看见刚才输入入的密码,APPScan配置要求IBMAPPScanAPPScan安装破解由于新版7.8以前的产品的的旧格式(.lic)许可证可以以继续用于新新版本的APPSCAN所以可以使用用以下方法进进行破解。解压AppScan7.8破解.rar你会看到:patch.exekeygen.exe如果没有看到到keygen.exe那肯定被你的的杀毒软件给给干了.解压之前一定定要关掉所有有杀毒的(包包括关闭自动动防护).第一步:打开patch.exe>patch>Cannotfindthefile.Searchthefile?>是>(AppScan安装目录下)选中engine_control.dll>OK第二步:打开keygen.exe>在第一个框TeamEDGE输入随便输入入如:keygen>Generate>当前目录生成成license.lic第三步:将自动生成的的license.lic复制到APPSCAN的安装目录下下。第四步:打开APPSCAN程序,单击帮帮助>许可证>装入旧格式((.lic)许可可证APPScan扫描原原理一一APPScan扫描原原理二二执行扫扫描的的原理理APPScan工作流流程APPScan工作流流程界面介介绍实例1实例2实例3实例4实例5在执行行Web安全扫扫描任任务的的过程程中,,您可可以随随时查查看已已经检检测出出的Web安全问问题。。扫描专专家评评估完完成后后,会会显示示所建建议的的配置置更改改核实实表。。这里要要注意意的是是:如如果存存在用用户输输入的的APPSCAN无法执执行的的更改改,那那么它它们的的复选选框会会显示示成灰灰色且且为未未选中中状态态,如如果要要修改改这些些更改改,单单击更更改的的链接接实例6实例7实例8AutomationTestTraining自动化化测试试项目目要素素投入产产出迭代速速度工具选选择环境搭搭建代码管管理开发周周期难点解解决后期维维护自动化化测试试工作作开展展如何在在项目目中快快速开开展自自动化化测试试?团队(知识结结构,,性格格,职职业发发展)Troubleshooter,Teamlead流程(目标,,代码码,环环境)为什么么目标标很重重要??技术(语言,,框架架,工工具)如何选选择??自动化化测试试工具具Watij/Selenium/WebdirverQTP/Winrunner/AutorunnerRobotiumAppiumLoadrunnerUI自动化化API自动化化Mobile自动化化分层自自动化化概念念:UI自动化化测试试工具具比较较Watij:开源,,只支支持IE浏览器器,对对象识识别完完全开开发,,只自自持B/S结构,,上手手需要要一定定代码码基础础QTP:商用用,,单单机机license5000美金金,,Vbscript语言言,,可可以以录录制制,,支支持持IE和firefox,上上手手容容易易,,支支持持CS结构构。。但但是是对对象象识识别别不不透透明明,,脚脚本本复复用用性性差差Webdirver:开源源,,支支持持IE/Firefox/Chrome浏览览器器,,对对象象识识别别完完全全开开发发,,只只支支持持B/S结构构,,需需要要一一定定代代码码基基础础Selenium自学学的的迷迷惑惑selenium的projects包含含如如下下几几个个方方面面::1.SeleniumIDE、2.SeleniumRemoteControl、3.SeleniumGrid、作为为Firefox上的的一一个个插插件件,,提提供供录录制制功功能能,,个个人人观观点点,,如如果果能能手手写写代代码码,,就就不不要要用用这这个个东东西西。。2.SeleniumRemoteControl是一一个个客客户户端端/服务务器器系系统统,,可可以以在在本本地地或或在在其其他他电电脑脑上上控控制制Web浏览览器器,,使使用用几几乎乎任任何何编编程程语语言言和和测测试试框框架架。。3.SeleniumGrid可以以远远程程的的控控制制到到并并在在多多个个服服务务器器上上同同时时运运行行测测试试4.SeleniumWebDriver可以以在在本本地地或或远远程程计计算算机机上上的的驱驱动动浏浏览览器器初识识Webdriver自动动化化测测试试思想想Case层::Case层是是一一个个个个完完整整的的测测试试案案例例,,是是自自动动化化测测试试中中最最小小的的执执行行单单元元;;Flow层::Flow层是是对对测测试试所所执执行行的的操操作作的的抽抽象象,,每每一一个个测测试试案案例例都都是是由由一一系系列列的的测测试试操操作作组组合合而而成成,,Flow层为为Case层提提供供了了可可组组合合的的操操作作集集;;Page层::Page层是是对对系系统统中中页页面面的的抽抽象象,,Flow层是是一一系系列列对对于于页页面面或或者者页页面面上上数数据据的的操操作作的的组组合合。。Page层为为Flow层提提供供了了可可操操作作的的页页面面集集合合;;Data层::Data层是是对对页页面面上上可可操操作作的的数数据据的的抽抽象象,,为为Flow层提提供供了了页页面面上上可可操操作作数数据据的的集集合合;;Element层::Element是页页面面上上的的IE控件件的的抽抽象象,,每每一一个个Page都是是由由这这些些IE空间间组组合合而而成成,,Element层为为Page层提提供供了了IE控件件的的集集合合;;XML文件件::XML文件件的的作作用用是是为为Data层提提供供测测试试所所需需数数据据;;框架架介介绍绍一一框架架介介绍绍二二框架架介介绍绍三三ResultcheckCaseExecute脚本本运运行行脚本本运运行行单个测试试脚本执执行:单单个执行行的时候候使用了了Junit执行,因因此在创创建时候候需要添添加@Test标签,运运行时选选择Outline中的相应应方法点点击右键键选择RunAsJunit;多脚本执执行:在在执行多多个测试试脚本的的时候框框架通过过Ant触发TestDriver运行,要要运行的的Case集合配置置与TestCaseList.xml文件中,,TestCaseList.xml文件内容容如下所所示:<TestCaseList><RunTimesvalue="1"/><TimeOutvalues="1800"/><TestClassname="TestCases.LS33Cases.RegressionCases"testAll="N"><Caseenable="Y">NBUTest_001</Case></TestClass></TestCaseList>其中:<RunTimesvalue="1"/>指定了Fail的Case的执行次次数,即即Fail的case否则重新新执行;;<TimeOutvalues="1800"/>指定了每每个case的执行时时间,如如果Case执行超过过这个时时间将会会终止该该Case的执行;;<TestClassname="TestCases.LS33Cases.RegressionCases"testAll="N"/>指定了运运行的Case集合,如如果testAll属性的值是Y则执行该该Class下的标有有@Test标签的方方法,如如果是N则执行<Caseenable="Y">NBUTest_001</Case>中标识的的方法。。TestNG配置批量量执行case1.安装TestNGeclipseplugin:Eclipse:Help->SoftwareUpdates->FindandInstall->Searchfornewfeaturestoinstall按NewRemoteSiteName:TestNG
URL:/eclipse然后安装装即可2.接入,只只需要导导入的@Test,然后添加加TestNG对应xml配置格式式如下<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEsuiteSYSTEM"/testng-1.0.dtd"><suitename="Releasetest"parallel="methods"configfailurepolicy="continue"thread-count="20"><testverbose="3"name="RegressionTest"><classes><classname="TestCase_Regression.Test_AppRollBack"/><classname="TestCase_Regression.Testcase_Part1_C365643_LDUatFail"/></classes>或者<packages><packagename="Configman"></package><packagename="CRoller"></package><packagename="CrollerToROP"></package></packages></test></suite>3.在xml右侧菜单单运行选选择runastestng就能运行行对应的的testsuite,如果需要要不同的的suite,只需要添添加并配配置xml。环境搭建建测试环境境的搭建建代码管理理开发平台台Selenium2+Junit4+SVN+EclipseSelenium2+TestNG+SVN+EclipseseleniumJava环境搭建建Webdriver对浏览器器的支持持2.1HtmlUnitDriver优点:HtmlUnitDriver不会实际际打开浏浏览器,,运行速速度很快快。对于于用FireFox等浏览器器来做测测试的自自动化测测试用例例,运行行速度通通常很慢慢,HtmlUnitDriver无疑是可可以很好好地解决决这个问问题。缺点:它它对JavaScript的支持不不够好,,当页面面上有复复杂JavaScript时,经常常会捕获获不到页页面元素素。使用:WebDriverdriver=newHtmlUnitDriver();2.2FireFoxDriver优点:FireFoxDirver对页面的的自动化化测试支支持得比比较好,,很直观观地模拟拟页面的的操作,,对JavaScript的支持也也非常完完善,基基本上页页面上做做的所有有操作FireFoxDriver都可以模模拟。缺点:启启动很慢慢,运行行也比较较慢,不不过,启启动之后后Webdriver的操作速速度虽然然不快但但还是可可以接受受的。使用:WebDriverdriver=newFirefoxDriver();2.3InternetExplorerDriver优点:直直观地模模拟用户户的实际际操作,,对JavaScript提供完善善的支持持。缺点:是是所有浏浏览器中中运行速速度最慢慢的,并并且只能能在Windows下运行,,对CSS以及XPATH的支持也也不够好好。使用:WebDriverdriver=newInternetExplorerDriver();对浏览器器的简单单操作一A.firefox//打开默认认路径的的firefox(路径指指的是firefox的安装路路径)WebDriverdiver=newFirefoxDriver();//打开指定定路径的的firefox,方法1
System.setProperty("webdriver.firefox.bin","D:\\ProgramFiles\\MozillaFirefox\\firefox.exe");WebDriverdr=newFirefoxDriver();//打开指指定路路径的的firefox,方法2FilepathToFirefoxBinary=newFile("D:\\ProgramFiles\\MozillaFirefox\\firefox.exe");FirefoxBinaryfirefoxbin=newFirefoxBinary(pathToFirefoxBinary);WebDriverdriver1=newFirefoxDriver(firefoxbin,null);B.ie//打开ieWebDriverie_driver=newInternetExplorerDriver();C.chrome因为ChromeDriver是Chromium项目自己支支持和维护护的,所以以你必需另另外下载chromedriver.exe,放在目录录下C:\WINDOWS\system32下载地址::打开chrome
WebDriverdriver=newChromeDriver();另一种启动动chrome的方法wiki介绍:打开chromeSystem.setProperty("webdriver.chrome.driver","D:\\chromedriver.exe");System.setProperty("webdriver.chrome.bin",C:\\DocumentsandSettings\\fy\\LocalSettings"+"\\ApplicationData\\Google\\Chrome\\Application\\chrome.exe");对浏览器的的简单操作作二最大化浏览览器WebDriverdriver=newFirefoxDriver();driver.manage().window().maximize();Stringtitle=driver.getTitle();
//得到当前页页面urlStringcurrentUrl=driver.getCurrentUrl();getWindowHandle()返回当前的的浏览器的的窗口句柄柄getWindowHandles()返回当前的的浏览器的的所有窗口口句柄getPageSource()返回当前页页面的源码码//Strings=driver.getPageSource();s=s.substring(s.indexOf("{"),s.indexOf("}"));//System.out.println("当前页面的的源码:"+s);如何找到页页面元素一Webdriver的findElement方法可以用用来找到页页面的某个个元素,最最常用的方方法是用id和name查找。几种种比较常用用的方法。。4.1.1ByID假设页面写写成这样::<inputtype="text"name="passwd"id="passwd-id"/>那么可以这这样找到页页面的元素素:通过id查找:WebElementelement=driver.findElement(By.id("passwd-id"));4.1.2ByName或通过name查找:WebElementelement=driver.findElement(B("passwd"));4.1.3ByXPATH或通过xpath查找:WebElementelement=driver.findElement(By.xpath("//input[@id='passwd-id']"));如何找到页页面元素二如何对页面面元素进行行操作一输入框(textfieldortextarea)找到输入框框元素:WebElementelement=driver.findElement(By.id("passwd-id"));在输入框中中输入内容容:element.sendKeys(“test”);将输入框清清空:element.clear();获取输入框框的文本内内容:element.getText();下拉选择框框(Select)找到下拉选选择框的元元素:Selectselect=newSelect(driver.findElement(By.id("select")));选择对应的的选择项::select.selectByVisibleText(“mediaAgencyA””);或select.selectByValue(“MA_ID_001”);不选择对应应的选择项项:select.deselectAll();select.deselectByValue(“MA_ID_001”);select.deselectByVisibleText(“mediaAgencyA”);或者获取选选择项的值值:select.getAllSelectedOptions();select.getFirstSelectedOption();如何对页面面元素进行行操作二单选项(RadioButton)找到单选框框元素:WebElementbookMode=driver.findElement(By.id("BookMode"));选择某个单单选项:bookMode.click();清空某个单单选项:bookMode.clear();判断某个单单选项是否否已经被选选择:bookMode.isSelected();多选项(checkbox)多选项的操操作和单选选的差不多多:WebElementcheckbox=driver.findElement(By.id("myCheckbox."));checkbox.click();checkbox.clear();checkbox.isSelected();checkbox.isEnabled();按钮(button)找到按钮元元素:WebElementsaveButton=driver.findElement(By.id("save"));点击击按按钮钮::saveButton.click();判断断按按钮钮是是否否enable:saveButton.isEnabled();如何何对对页页面面元元素素进进行行操操作作三左右右选选择择框框也就就是是左左边边是是可可供供选选择择项项,,选选择择后后移移动动到到右右边边的的框框中中,,反反之之亦亦然然。。例例如如::Selectlang=newSelect(driver.findElement(By.id("languages")));lang.selectByVisibleText(““English””);WebElementaddLanguage=driver.findElement(By.id("addButton"));addLanguage.click();弹出出对对话话框框(Popupdialogs)Alertalert=driver.switchTo().alert();alert.accept();alert.dismiss();alert.getText();表单单(Form)Form中的的元元素素的的操操作作和和其其它它的的元元素素操操作作一一样样,,对对元元素素操操作作完完成成后后对对表表单单的的提提交交可可以以::WebElementapprove=driver.findElement(By.id("approve"));approve.click();或approve.submit();//只适合于表单单的提交上传文件(UploadFile)上传文件的元元素操作:WebElementadFileUpload=driver.findElement(By.id("WAP-upload"));StringfilePath="C:\test\\uploadfile\\media_ads\\test.jpg";adFileUpload.sendKeys(filePath);如何对页面元元素进行操作作四Windows和Frames之间的切换一般来说,登登录后建议是是先:driver.switchTo().defaultContent();切换到某个frame:driver.switchTo().frame("leftFrame");从一个frame切换到另一个个frame:driver.switchTo().frame("mainFrame");切换到某个window:driver.switchTo().window("windowName");如何对页面元元素进行操作作五调用JavaScriptWebdriver对JavaScript的调用是通过过JavascriptExecutor来实现的,例例如:JavascriptExecutorjs=(JavascriptExecutor)driver;js.executeScript("(function(){inventoryGridMgr.setTableFieldValue('"+inventoryId+"','"+fieldName+"','"+value+"');})()");截图如果用webdriver截图是:driver=webdriver.Firefox()
driver.save_screenshot("C:\error.jpg")读取Cookies我们经常要对对的值进行读读取和设置。。增加cookie:Cookiecookie=newCookie("key","value");driver.manage().addCookie(cookie);获取cookie的值:Set<Cookie>allCookies=driver.manage().getCookies();for(CookieloadedCookie:allCookies){System.out.println(String.format("%s->%s",loadedCookie.getName(),loadedCookie.getValue()));}根据某个cookie的name获取cookie的值:driver.manage().getCookieNamed("mmsid");删除cookie:driver.manage().deleteCookieNamed("CookieName");//ByCookiedriver.manage().deleteCookie(loadedCookie);//Orallofthemdriver.manage().deleteAllCookies();如何对页面元元素进行操作作六页面等待因为Load页面需要一段段时间,如果果页面还没加加载完就查找找元素,必然然是查找不到到的。最好的的方式,就是是设置一个默默认等待时间间,在查找页页面元素的时时候如果找不不到就等待一一段时间再找找,直到超时时。Webdriver提供两种方法法,一种是显显性等待,另另一种是隐性性等待。显性等待:WebDriverdriver=newFirefoxDriver();driver.get("http://somedomain/url_that_delays_loading");WebElementmyDynamicElement=(newWebDriverWait(driver,10)).until(newExpectedCondition<WebElement>(){@OverridepublicWebElementapply(WebDriverd){returnd.findElement(By.id("myDynamicElement"));}});隐性等待:WebDriverdriver=newFirefoxDriver();driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);driver.get("http://somedomain/url_that_delays_loading");WebElementmyDynamicElement=driver.findElement(By.id("myDynamicElement"));元素实现的方方法给元素新增一一个方法的流流程元素方法的具具体实现特殊Selectlist的处理特殊Selectlist的处理二对日期控件的的处理webdriver如何处理时间间控件:1、使用比较普普遍,也很通通俗的方法先先切换到时时间控件的frame,再在frame中实现所要点点击时间的操操作2、使用js,实现把时间间标签中的value属性赋值,这这个值就是你你想要选择的的时间,注意意时间格式;;若改时间标标签为只读,,需要把只读读限制去掉以以下为代码码:JavascriptExecutorremoveAttribute=(JavascriptExecutor)driver;//removereadonlyattributeremoveAttribute.executeScript("varsetDate=document.getElementById(\"train_date\");setDate.removeAttribute('readonly');");WebElementsetDatElement=driver.findElement(By.xpath("//input[@id='train_date']"));setDatElement.clear();setDatElement.sendKeys("2015-02-18");一些经验1Frame处理:frame=ControllerChoose.getSpecificController().getSelectList(Finder.cssSelector,"#iframeiframe");Objectframedriver=frame.switchToFrame();ReleasePoint=ControllerChoose.getSpecificController().getTextField(Finder.xpath,"//table[@class='InputTB']/tbody/tr[1]/td[2]/span/input[1]",framedriver);日历格处理:在page中定义Element为Date类型Plandate在case中引用该Element的方法:BacicInfo.getInstance().plandate.DateValueUIC1_executeJScript("2014-10-10");一些经验23.打开多个Tab,返回到初始始的driverSet<String>handles=InitDriver.getWindowHandles();4.返回到指定url的driverInitDriver.SwitchToWindowByUrl("30/ropv2/ld_window/");5.Alert处理alert=ControllerChoose.getSpecificController().getAlertDialogue();//page中定义RollBackOperation.getInstance().alert.clickOK();//case中调用方法6.Select框处理VersionSelect=ControllerChoose.getSpecificController().getSelectList(Finder.id,““ContentPlaceHolder1_rptAppList_ddlVersion_0”);//page中定义RollBackOperation.getInstance().VersionSelect.selectValue(“v2”);//case中调用一些经验3WebDriver每次启动一个个Firefox的实例时,会会生成一个匿匿名的profile,并不会使用用当前Firefox的profile。这点一定要要注意。比如如如果访问被被测试的web服务需要通过过代理,你想想直接设置Firefox的代理是行不不通的,因为为WebDriver启动的Firefox实例并不会使使用你这个profile,正确的做法法是通过FirefoxProfile来设置。publicWebDrivercreate(){FirefoxProfilefirefoxProfile=newFirefoxProfile();firefoxProfile.setPreference("xy.type",1);firefoxProfile.setPreference("xy.http",yourProxy);firefoxProfile.setPreference("xy.http_port",yourPort);firefoxProfile.setPreference("xy.no_proxies_on","");returnnewFirefoxDriver(firefoxProfile);}通过FirefoProfile也可以设置Firefox其它各种配置置。如果要默默认给Firefox安装插件的话话,可以将插插件放置到Firefox安装目录下的的默认的plugin文件夹夹中,,这样样即使使是使使用一一个全全新的的profile也可以以应用用此plugin一些经经验4使用WebDriver点击界界面上上Button元素时时,如如果当当前Button元素被被界面面上其其他元元素遮遮住了了,或或没出出现在在界面面中((比如如Button在页面面底部部,但但是屏屏幕只只能显显示页页面上上半部部分)),使使用默默认的的WebElement.Click()可能会会触发发不了了Click事件。。修正方方案是是找到到该页页面元元素后后直接接发送送一条条Click的JavaScript指令。。((JavascriptExecutor)webDriver).executeScript("arguments[0].click();",webElement);如果网网站使使用了了JQuery的动画画效果果,我我们在在运行行测试试的时时候其其实可可以disableJQuery的animation,一方方面可可以加加快测测试的的速度度,另另一方方面可可以加加强测测试的的稳定定性((如果果启用用了Animation,使用用WebDriver驱动浏浏览器器时可可能会会出现现一些些无法法预料料的异异常))。((JavascriptExecutor)driver).executeScript("jQuery.fx.off=true");由于WebDriver要驱动动浏览览器,,所以以测试试运行行的时时间比比较长长,我我们可可以并并行跑跑测试试以节节省时时间。。如果果你使使用的的是maven构建工工具,,可以以配置置surefireplugin时,在在configruation节点加加入以以下配配置。。<parallel>classes</parallel><threadCount>3</threadCount><perCoreThreadCount>false</perCoreThreadCount>一些经经验5当进行行了一一些操操作发发生页页面跳跳转时时,最最好加加一个个Wait方法等等待pageload完成再再进行行后续续操作作。方方法是是在某某个时时间段段内判判断document.readyState是不是是tectedFunction<WebDriver,Boolean>isPageLoaded(){returnnewFunction<WebDriver,Boolean>(){@OverridepublicBooleanapply(WebDriverdriver){return((JavascriptExecutor)driver).executeScript("returndocument.readyState").equals("complete");}};}publicvoidwaitForPageLoad(){WebDriverWaitwait=newWebDriverWait(webDriver,30);wait.until(isPageLoaded());}一些经经验6如果页页面有有Ajax操作,,需要要写一一个Wait方法等等待Ajax操作完完成。。方式式与上上一条条中的的基
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 供电局新员工转正
- 弹唱钢琴课程介绍
- 连接技术在物流行业的应用研究
- 幼师中途接班自我介绍
- 带传动的设计实例
- 家电行业市场份额研究
- 2025房产中介买卖合同协议书
- 2025房屋全款交易买卖合同范本
- 共价有机聚合物的制备及其负载乳香、香附挥发油的应用基础研究
- 2025租房租赁合同模板下载
- 生产建设项目水土保持设施验收技术规程(2025版)
- 2026秋季甘肃省电力投资集团有限责任公司校园招聘笔试备考题库及答案解析
- 单价、数量和总价课件
- 游泳三级考试试题及答案
- 产力异常的课件
- 中建钻孔灌注桩(水中桩基)专项施工方案
- 2025年专升本康复试题及答案
- 静脉炎的处理原则课件
- 叉车司机三级试题+答案
- 儿童机械原理课件
- 卵巢黄体破裂课件
评论
0/150
提交评论