综述Web系统功能测试工-selenium的安装使用及问题.ppt
Web系统功能测试工具:Selenium Selenium是ThoughtWorks专门为 Web 应用而开发的功能测试工具。Selenium使用JavaScript和Iframes在浏览器嵌入自动化测试引擎,可以在任何支持JavaScript的浏览器中进行工作,模拟用户在浏览器中进行的操作。1.Selenium的优势:1 1)它是开源的)它是开源的 2 2)简单,易于安装,易于工作)简单,易于安装,易于工作 3 3)提供)提供Selenium IDE Selenium IDE,一个,一个FireFox pluginFireFox plugin,能自动记录用户的操作,能自动记录用户的操作,生成测试脚本。生成的测试脚本可以基于生成测试脚本。生成的测试脚本可以基于Selenium RCSelenium RC放入放入JavaJava,C#C#,RubyRuby的单元测试用例中自动运行。的单元测试用例中自动运行。selenium ideselenium ide是是seleniumselenium的唯一可以在的唯一可以在浏览器窗口上记录用户行为的组件浏览器窗口上记录用户行为的组件 4 4)除了火狐上的事件外不会记录你电脑上的任何其他事件)除了火狐上的事件外不会记录你电脑上的任何其他事件 5 5)SeleniumSelenium支持多种浏览器,能够运行与多种操作系统,因此更容支持多种浏览器,能够运行与多种操作系统,因此更容易帮助测试人员发现应用程序在不同浏览器上的兼容性问题。通过在易帮助测试人员发现应用程序在不同浏览器上的兼容性问题。通过在不同浏览器中运行测试,更容易发现浏览器的不兼容性;不同浏览器中运行测试,更容易发现浏览器的不兼容性;6 6)通过编写模仿用户操作的)通过编写模仿用户操作的 Selenium Selenium 测试脚本,可以从终端用户测试脚本,可以从终端用户的角度来测试应用程序;可以操作的角度来测试应用程序;可以操作 Web Web 页面上的各种元素,诸如:点页面上的各种元素,诸如:点击按钮、输入文本框,以及断言击按钮、输入文本框,以及断言 Web Web 页面上存在某些文本与页面上存在某些文本与 Web Web 元素元素等。等。7 7)测试用例调用实际的浏览器)测试用例调用实际的浏览器(如如IEIE、FireFox)FireFox)来执行测试。和有来执行测试。和有些开源方案自行实现些开源方案自行实现WebWeb解释引擎相比,实际的浏览器能模拟更多用解释引擎相比,实际的浏览器能模拟更多用户交互和户交互和JSJS语法。语法。88)SELENIUM SELENIUM录制的脚本比较灵活,因为它生成的是录制的脚本比较灵活,因为它生成的是PERLPERL的的脚本程序。作为几乎最为强大和最广泛使用语言之一,脚本程序。作为几乎最为强大和最广泛使用语言之一,PERLPERL这种程这种程序给予我最大的灵活性和控制度。序给予我最大的灵活性和控制度。2.需要的软件需要的软件1 1)FirefoxFirefox,Selenium IDE Selenium IDE 插件,插件,Firebug Firebug 插件。插件。2 2)Selenium RCSelenium RC3 3)XPatherXPather4 4)JDKJDK5 5)EclipseEclipse6 6)SQL server 2000SQL server 20003.Selenium 是是ThroughtWorks 公司一个强公司一个强大的开源大的开源Web 功能测试工具系列功能测试工具系列 1 1)Selenium Selenium 可以使用录制工具录制脚本,测试页面。可以使用录制工具录制脚本,测试页面。2 2)Selenium Selenium 可以生成类可以生成类html html 代码,代码,java java 代码,代码,ruby ruby 代码等。代码等。3 3)Selenium Selenium 录制工具根据录制工具根据id id 属性定位属性定位html html 元素元素4 4)Selenium IDE Selenium IDE 仅支持仅支持Selenium Selenium 语言。语言。5 5)Selenium RC Selenium RC 支持很多语言,如:支持很多语言,如:C#C#,JavaJava,PythonPython,Ruby Ruby 等。等。4.使用使用Selenium IDE插件插件1 1)Firefox Firefox工具栏,打开工具栏,打开Selenium-IDESelenium-IDE插件,如下图:插件,如下图:2 2)选择插件界面中右上角红色录制按钮(开始录制、停)选择插件界面中右上角红色录制按钮(开始录制、停止录制都是此按钮),如下图,这里录制登陆集中管理工止录制都是此按钮),如下图,这里录制登陆集中管理工具的过程。具的过程。3 3)录制完成后,点击回放按钮可以对刚刚录制的脚本进行回放,这)录制完成后,点击回放按钮可以对刚刚录制的脚本进行回放,这里可以调整回放速度。里可以调整回放速度。4 4)可以将录制的脚本转换成)可以将录制的脚本转换成C#,JavaC#,Java,PHP,RubyPHP,Ruby,Perl,Groovy,Perl,Groovy,PythonPython等语言,这里选择等语言,这里选择JavaJava,如下图:,如下图:5.Selenium-RC的使用的使用 1 1)启动)启动ServerServer:通过命令行的方式用如下的命令来启动你的通过命令行的方式用如下的命令来启动你的Selenium ServerSelenium Server:java-jar selenium-server.jar java-jar selenium-server.jar 这个命令将启动这个命令将启动SeleniumSelenium服务器,可以带参数启动,如服务器,可以带参数启动,如java jar java jar selenium-server.jar-interactiveselenium-server.jar-interactive为以交互模式启动为以交互模式启动2 2)打开)打开EclipseEclipse,建立建立Test ProjectTest Project3 3)将)将selenium-java-client-driver.jarselenium-java-client-driver.jar导入此导入此projectproject的的classpath classpath 4 4)将)将Selenium-IDESelenium-IDE录制好的录制好的htmlhtml脚本转换成脚本转换成javajava文件,导入新建的文件,导入新建的projectproject(可能需要稍作修改,如添加(可能需要稍作修改,如添加assertassert判断用例是否测试通过),判断用例是否测试通过),或直接使用或直接使用selenium-java-client APIselenium-java-client API编写测试用例。本工具同时支持编写测试用例。本工具同时支持JunitJunit和和TestNgTestNg测试框架测试框架5 5)在)在Java IDE Java IDE 或命令行执行编写好的测试用例或命令行执行编写好的测试用例 6.XPather1 1)XpathXpath:是是XML XML 的查询语言,的查询语言,必须注意要以必须注意要以/开头。开头。2 2)Xpath checkerXpath checker:查看根据你写的:查看根据你写的xpath xpath 是否可以找到对应的是否可以找到对应的elementelement。注:注:一般和一般和firebug firebug 一起用。用一起用。用firebugfirebug来看来看htmlhtml源代码,然后估计源代源代码,然后估计源代码才能写码才能写xpathxpath。3 3)也可以通过)也可以通过XPath checkerXPath checker来定位来定位elementelement。7.与与 SQL 的连接的程序的连接的程序String driverName=com.microsoft.jdbc.sqlserver.SQLServerDriver;String driverName=com.microsoft.jdbc.sqlserver.SQLServerDriver;String dbURL=jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=aaa;String dbURL=jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=aaa;String userName=sa;String userName=sa;String userPwd=123456;String userPwd=123456;Connection dbConn=null;Connection dbConn=null;try try Class.forName(driverName);Class.forName(driverName);dbConn=DriverManager.getConnection(dbURL,userName,userPwd);dbConn=DriverManager.getConnection(dbURL,userName,userPwd);System.out.println(Connection Successful!);System.out.println(Connection Successful!);catch(Exception e)catch(Exception e)e.printStackTrace();e.printStackTrace();8.定位弹出窗口定位弹出窗口1 1)通过)通过xpathxpath得到得到hrefhref的属性,例如对于一段的属性,例如对于一段HTMLHTML代码:代码:a click here target=“newwindow”href=“relative_URL”click here:String url=selenium.getAttribute(“atext()=click herehref”);String url=selenium.getAttribute(“atext()=click herehref”);2 2)然后使用)然后使用OpenWindow(URL,ID)OpenWindow(URL,ID)和和 selectWindow(ID)selectWindow(ID)就选中了子窗就选中了子窗口,然后可以在上面进行操作,比如验证文字存在,输入数据之类口,然后可以在上面进行操作,比如验证文字存在,输入数据之类的的 9.文本框文本框Text box1 1)向文本框中填写信息)向文本框中填写信息type(java.lang.String locator,java.lang.String value)type(java.lang.String locator,java.lang.String value)例如:例如:selenium.type(“username”,“jingya_12”);selenium.type(“username”,“jingya_12”);2 2)取出某个文本框中已经填写的信息)取出某个文本框中已经填写的信息java.lang.StringgetValue(java.lang.String locator)java.lang.StringgetValue(java.lang.String locator)例如:例如:selenium.getValue(/inputid=username);selenium.getValue(/inputid=username);3 3)判断某文本框是否可编辑)判断某文本框是否可编辑booleanisEditable(java.lang.String locator)booleanisEditable(java.lang.String locator)例如:例如:selenium.isEditable(/inputname=addProfileLastName);selenium.isEditable(/inputname=addProfileLastName);10.下拉框下拉框 Drop down list1 1)向下拉框中选值)向下拉框中选值select(java.lang.String selectLocator,java.lang.String optionLocator)select(java.lang.String selectLocator,java.lang.String optionLocator)例如:例如:selenium.select(/tableid=gxsz/tbody/tr3/td2/select,index=0);selenium.select(/tableid=gxsz/tbody/tr3/td2/select,index=0);2 2)取出某个下拉框中已经选择的值)取出某个下拉框中已经选择的值java.lang.StringgetSelectedLabel(java.lang.String selectLocator)java.lang.StringgetSelectedLabel(java.lang.String selectLocator)例如:例如:selenium.getSelectedLabel(/tableid=gxsz/tbody/tr3/td2/select);selenium.getSelectedLabel(/tableid=gxsz/tbody/tr3/td2/select);3 3)取出某个下拉框中所有的选项)取出某个下拉框中所有的选项java.lang.String getSelectOptions(java.lang.String selectLocator)java.lang.String getSelectOptions(java.lang.String selectLocator)例如:例如:selenium.getSelectOptions(/divid=mysearch_tips/select selenium.getSelectOptions(/divid=mysearch_tips/select)11.按钮或链接按钮或链接Button&Link1 1)单击)单击click(java.lang.String locator)click(java.lang.String locator)例如:例如:selenium.click(/tableid=gxsz/tbody/tr1/td2/inputid=s1_1);selenium.click(/tableid=gxsz/tbody/tr1/td2/inputid=s1_1);12.取元素的特定属性值和取元素的特定属性值和text的值的值1 1)取某个元素的特定属性值取某个元素的特定属性值java.lang.String getAttribute(java.lang.String attributeLocator)java.lang.String getAttribute(java.lang.String attributeLocator)例如:例如:selenium.getAttribute(“/imgname=picNamestyle”)selenium.getAttribute(“/imgname=picNamestyle”)2 2)取某元素的)取某元素的text text 值值java.lang.String getText(java.lang.String locator)java.lang.String getText(java.lang.String locator)例如:例如:selenium.getText(/center/divid=main/divid=center/div1/stroselenium.getText(/center/divid=main/divid=center/div1/strong2);ng2);