selenium入门.docx
- 文档编号:8635575
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:23
- 大小:924.13KB
selenium入门.docx
《selenium入门.docx》由会员分享,可在线阅读,更多相关《selenium入门.docx(23页珍藏版)》请在冰豆网上搜索。
selenium入门
selenium入门
1selenium简介
selenium是一款基于web应用程序的开源测试工具。
Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。
它支持Firefox、ie、Mozilla等众多浏览器。
它同时直至JAVA、C#、Ruby、Python、PHP、Perl等众多的主流语言。
Selenium名字的来历:
在Selenium出现之前,当时最著名的web应用功能测试工具MercuryQuanlityCenter,但那是一个商业工具,功能强大却也价格不菲,常常让开发者们又爱又恨。
所以,自己动手开发开源功能测试工具的ThoughtWorker们把这个工具叫做Selenium——“mercury”有“水银”的意思,而“selenium”(硒元素)恰好是专解汞中毒的特效药。
Selenium是运行在浏览器中,seleniumIDE能够提供录制功能。
Selenium具有开源性、跨平台性简单灵活、以及支持众多的编程语言支持的特点,你可以用html编写测试用例,也可以用python、java、php甚至Linuxshell来编写测试用例。
如此多的特性,使Selenium最近几年成为越来越多QA的Web应用功能测试的首选自动化测试工具。
2selenium的组成
Selenium的框架与原理:
selenium是web自动化测试工具集,包括IDE、Grid、RC、WebDriver等。
SeleniumIDE是firefox浏览器的一个插件。
提供简单的脚本录制、编辑与回放功能。
SeleniumGrid是用来对测试脚步做分布式处理,现在已经集成到seleniumserver中了。
RC和WebDriver更多应该把它看成一套规范,在这套规范里定义客户端脚步与浏览器交互的协议,以及元素定位与操作的接口。
2.1selenium1.0
Selenium1.0使用的是Javascript注入技术与浏览器打交道,需要SeleniumRC启动一个Server,将操作Web元素的API调用转化为一段段Javascript,在Selenium内核启动浏览器之后注入这段Javascript。
开发过Web应用的人都知道,Javascript可以获取并调用页面的任何元素,自如的进行操作。
由此才实现了Selenium的目的:
自动化Web操作。
这种Javascript注入技术的缺点是速度不理想,而且稳定性大大依赖于Selenium内核对API翻译成的Javascript质量高低。
图17-1selenium1.0体系结构
2.2selenium2.0
Selenium2.0则是把selenium1.0中seleniumRC替换为了WebDriver。
图17-2selenium1.0体系结构
2.3seleniumIDE
SeleniumIDE是一个火狐插件,可以在火狐中录制,回放脚本,也可以将录制好的测试脚本格式化成其他语言,例如java,python,c#,ruby。
除此之外selenium在googlecode上还有很多其他语言的支持,例如javascript,vb等。
SeleniumIDE只是一个小工具,对于一些较复杂的页面,SeleniumIDE就不能做到完美的录制、回放。
它最大的用处就是帮助新手学习selenium脚本的写法,同时熟悉selenium的API。
SeleniumIDE特点:
1.非常容易在页面上进行录制和回放
2.能自动通过id,name和xpath来定位页面上的元素。
3.自动执行selenium的命令。
4.能够进行调试和设置断点。
5.录制生成的脚本能够转化成各种语言
6.在每个录制的脚本中能够加入断言
2.4seleniumGrid
SeleniumGrid是一种自动化的测试辅助工具,Grid通过利用现有的计算机基础设施,能加快Web-app的功能测试。
利用Grid,可以很方便地同时在多台机器上和异构环境中并行运行多个测试事例。
SeleniumGrid基于Web-app测试工具Selenium,它可以让您同时并行运行多个SeleniumRemoteControl。
比较好的一点是,它使所有这些SeleniumRemoteControl显示为一个,这样您在测试中就可以不必操作具体的计算机。
SeleniumGrid因为是基于SeleniumRC的,所以它同时支持RC的其它所有语言,如:
Ruby、Java、Python、C#、PHP。
2.5seleniumRC
SeleniumRemoteControl:
一个代理与控制端,可代替Seleniumcore/SeleniumIDE的client端(相当于通过编程来实现一切),是支持多语言的.
随着webdriver加入selenium体系中,RC已经改名为SeleniumServer,目前最新的版本是2.25。
Selenium-RC可以使用高级语言来编写web页面测试脚本,编写的脚本可以运行在任何支持js的浏览器中。
Selenium-RC包括两部分:
selenium服务器,能够自动的开启和关闭web浏览器。
对于web的请求,它就像一个http代理,SeleniumServer通过向浏览器发出JavaScript调用实现对Html页面的全面追踪,并通过网络把执行结果返回给Selenium客户端。
另外,由于selenium服务器是用JAVA开发的,所以在搭建测试环境的时候,需要安装java的环境。
selenium客户端程序,Selenium客户端一般使用单元测试技术实现,通过判断返回的结果与预期是否一致来决定程序是否运行正确,selenium客户端测试程序可以使用java、php、.net等高级语言来编写。
SeleniumRC原理:
SeleniumServer通过网络与Selenium客户端通讯,接收Selenium测试指令。
SeleniumServerSelenium是通过javascript来实现对Html页面的操作的。
它提供了丰富的指定Html页面元素和操作页面元素的方法。
通过向浏览器发出JavaScrip调用实现对Html页面的全面追踪,并通过网络把执行结果返回Selenium客户端。
Selenium客户端一般使用单元测试技术实现,通过判断返回的结果与预期是否一致来决定程序是否运行正确。
Selenium-RC在进行测试的时候也分两种模式,一种是交互模式,一种是代理驱动模式。
在交互模式下,当我们启动selenium-server后,可以直接在service界面下输入命令运行,结果是我们可以立即在浏览器中看到执行的结果。
2.6WebDriver
WebDriver利用浏览器原生的API,封装成一套更加面向对象的SeleniumWebDriverAPI,直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的)。
由于使用的是浏览器原生的API,速度大大提高,而且调用的稳定性交给了浏览器厂商本身,显然是更加科学。
然而带来的一些副作用就是,不同的浏览器厂商,对Web元素的操作和呈现多少会有一些差异,这就直接导致了SeleniumWebDriver要分浏览器厂商不同,而提供不同的实现。
例如Firefox就有专门的FirefoxDriver,Chrome就有专门的ChromeDriver等等。
3玩转seleniumIDE
3.1seleniumIDE环境搭建
1.安装火狐浏览器
如果您电脑还没有FireFox浏览器的话,此为第一个必须先安装的,从官网上直接可以在线安装(需要注意的是FireFox需要和seleniumIDE兼容)。
2.安装SeleniumIDE插件获得此插件有两种方法,第一种方法在直接在官方网站上,第二种在FireFox的插件管理器中直接在线搜索SeleniumIDE
(1)方式一:
使用火狐浏览器打开http:
//docs.seleniumhq.org/download/,在页面中找到版本号,点击下载即可;
(2)方式二:
在火狐浏览器的附加组件里搜索SeleniumIDE(我们选择这个方式安装seleniumIDE,保证火狐浏览器和seleniumIDE兼容)。
搜索出来下面的插件之后,点击添加到Firefox,安装之后,重启火狐浏览器。
图17-3FireFox搜索seleniumIDE插件
(3)验证selenium是否安装成功,在火狐浏览器的菜单栏“工具“里查看是否有SeleniumIDE。
点击图中的小按钮,打开SeleniumIDE的界面
图17-4SeleniumIDE快捷按钮
(4)SeleniumIDE的界面如下
图17-5SeleniumIDE的界面
3.2seleniumIDE的使用
1.打开SeleniumIDE的界面,在BaseURL中输入要测试界面的网址,
如
图17-6输入网址
2.使用火狐浏览器打开XX主页(步骤1、2可以互换)
图17-7打开需要录制的网页
3.点击录制按钮
图17-8点击录制按钮
4.在XX搜索框中输入“selenium”,点击“XX一下”按钮
图17-8进行录制操作
5.点击停止录制按钮
图17-9停止录制按钮
6.回放脚本
图17-10回放按钮
7.保存脚本
图17-11另存为录制脚本
8.转化脚本格式
图17-12转换脚本格式
1)如将脚本保存为java格式
图17-13将脚本转换为java格式的文件
2)使用eclipse打开保存的脚本进行编辑
图17-14打开转换后的文件
4selenium2.0环境搭建(java版)
selenium2.0的组成包括seleniumIDE、seleniumGrid以及WebDriver。
4.1selenium2.0环境搭建(客户端)
selenium2.0(webdriver)java版环境的配置包括以下两部分内容:
Ø配置selenium的java语言绑定客户端
Ø配置firefoxDriver
注意:
在配置selenium和Firefox时,需考虑版本是否兼容问题,所以在选择软件的时候可以参考下面的版本对应。
【Selenium】 -> 【FireFox】
2.25.0 -> 18
2.30.0 -> 19
2.31.0 -> 20
2.42.2 -> 29
2.44.0 -> 33 (不支持31,2014/12/1)
如果两者不对应,则选择升级selenium jar包,或者是升级firefox。
但是selenium-java-2.42.2版本和firefox 29.0.1版本兼容,如果升级到firefox 30+,则浏览器启动失败,可能是selenium还未同步升级,后面估计可以正常支持。
切记,关掉forefox的升级功能,否则连本地Windows上的脚本都跑不起来。
1、配置selenium2.0(webdriver)的Java语言绑定客户端包括以下步骤
1)下载并安装Java开发环境(JDK)
安装JDk,并配置JDK的环境变量(这里用的是jdk-8u51-windows-x64)。
2)下载并安装eclipse
下载针对Java开发人员的版本。
3)下载selenium2.0的Java客户端驱动(本版本使用的是selenium-2.44.0)
下载selenium2.0的Java客户端驱动,解压后包括以下内容:
图17-15selenium2.0
4)启动eclipse,并配置selenium2.0(Webdriver)
启动eclipse,选择File->SwitchWorkSpace->Other,创建一个webDriver新目录用于保存selenium2的工作空间。
图17-16创建webdriver工作空间
通过eclipse的菜单选择File-New-Project-JavaProject来创建一个名为selenium2的Java新项目。
图17-17创建java项目
在该项目中导入selenium的类库,选择“configurebuildpath”,然后就会进入到了library的选项界面中,然后添加jar的文件,进行点击”addexternaljars“的菜单,将libs中的文件和两个jar包都添加进去。
图17-18,17-19导入seleniumjar包
添加好之后的目录结构界面如下
图17-20导入后seleniumjar包后的界面
4.2Firefoxdriver的部署和使用
Firefoxdriver的部署
1)安装火狐浏览器(这里的版本需要注意,要和selenium的版本兼容才行)
2)安装seleniumIDE插件(参考第3小节内容)
3)安装FirefoxDriver
Firefoxdriver是直接打包在webdriverJavaClientDriver中的。
如果按照前面的步骤成功下载了webdriverJavaClientDriver,就不需要再另外下载FirefoxDriver,可以在代码中直接调用即可。
测试Selenium环境搭建的正确性:
webdriver工程中新建包名为org.coderinfo.demo。
在这个包中新建一个类,类名为TestEnv。
图17-21新建测试类
4.3selenium2.0的环境验证
编辑TestEnv这个类文件内容如下:
packageorg.coderinfo.demo;
importorg.openqa.selenium.By;
importorg.openqa.selenium.JavascriptExecutor;
importorg.openqa.selenium.WebDriver;
importorg.openqa.selenium.firefox.FirefoxDriver;
publicclassTestEnv{
publicstaticvoidmain(String[]FirefoxDriver){
//TODOAuto-generatedmethodstub
WebDriverdr=newFirefoxDriver();
dr.get("");
Stringurl=dr.getCurrentUrl();
System.out.println(url);
dr.close();
}
}
如果环境配置成功,点击运行按钮后,能够调起来火狐浏览器,打开XX主页,并关闭退出浏览器。
5selenium2.0案例
5.1参数化
参数化XX搜索框的搜索内容,实现循环搜索功能。
解决方法:
使用for循环,在之前新建好的selenium2.0的javaProject中,新建一个类,类中的代码如下:
packageorg.coderinfo.demo;//导入包文件
importorg.openqa.selenium.By;
importorg.openqa.selenium.JavascriptExecutor;
importorg.openqa.selenium.WebDriver;
importorg.openqa.selenium.firefox.FirefoxDriver;
publicclassTestEnv{
publicstaticvoidmain(String[]FirefoxDriver){
//TODOAuto-generatedmethodstub
Stringstr[]={"UFT","selenium","SHE","Fly"};
for(inti=0;i WebDriverdr=newFirefoxDriver();//打开浏览器 dr.get("");//打开XX页面 Stringurl=dr.getCurrentUrl(); System.out.println(url); dr.findElement(By.id("kw")).click(); dr.findElement(By.id("kw")).clear(); dr.findElement(By.id("kw")).sendKeys(str[i]); dr.findElement(By.id("su")).click(); dr.close();//关闭浏览器 } } } 5.2最大化浏览器窗口 可以使用maximize函数最大化浏览器窗口。 解决方法: 代码如下 importorg.openqa.selenium.By; importorg.openqa.selenium.JavascriptExecutor; importorg.openqa.selenium.WebDriver; importorg.openqa.selenium.firefox.FirefoxDriver; publicclasstest{ publicstaticvoidmain(String[]FirefoxDriver){ //TODOAuto-generatedmethodstub WebDriverdr=newFirefoxDriver(); dr.get(""); Stringurl=dr.getCurrentUrl(); System.out.println(url); System.out.println("maximizebrowser"); dr.manage().window().maximize();//使用maximize最大化浏览器窗口 System.out.println("browserwillbeclose"); dr.close(); } } 5.3访问链接 webdriver的api里有2种访问url的方式,分别是get和navigate.to方法。 一般情况下建议使用get,因为其字母比较少,不太容易出错。 解决方法: 代码如下 importorg.openqa.selenium.By; importorg.openqa.selenium.JavascriptExecutor; importorg.openqa.selenium.WebDriver; importorg.openqa.selenium.firefox.FirefoxDriver; publicclasstest{ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub WebDriverdr=newFirefoxDriver(); Stringurl=""; System.out.printf("nowaccesss%s\n",url); dr.get(url); System.out.println("browserwillbeclose"); dr.quit(); } } 5.4设置浏览器的大小 可以使用setSize函数修改窗口的大小。 解决方法: importjava.io.File; //导入Dimension importorg.openqa.selenium.Dimension; importorg.openqa.selenium.By; importorg.openqa.selenium.JavascriptExecutor; importorg.openqa.selenium.WebDriver; importorg.openqa.selenium.WebElement; importorg.openqa.selenium.firefox.FirefoxDriver; publicclasstest{ publicstaticvoidmain(String[]args){ Dimensiondimensio; DimensionbrowserSize=newDimension(350,600); System.setProperty("webdriver.firefox.FirefoxDriver","C: \\ProgramFiles(x86)\\MozillaFirefox\\firefox.exe"); WebDriverdriver=newFirefoxDriver(); //设置浏览器大小 driver.manage().window().setSize(browserSize); //获取当前浏览器大小 dimensio=driver.manage().window().getSize(); //输出 System.out.print("浏览器当前高度为"+dimensio.getHeight()+";浏览器当前宽度为"+dimensio.getWidth()); } } 运行结果: 在控制台“输出浏览器当前高度为600;浏览器当前宽度为350” 5.5浏览器窗口之间的切换 借助sendKeys函数,将切换窗口的功能封装成一个函数即可实现窗口之间的切换。 解决方法: importjava.io.File; importjava.util.Set; importorg.openqa.selenium.By; importorg.openqa.selenium.JavascriptExecutor; importorg.openqa.selenium.WebDriver; importorg.openqa.selenium.WebElement; importorg.openqa.selenium.firefox.FirefoxDriver; publicclasstest{ publicstaticvoidmain(String[]args){ System.setProperty("webdriver.firefox.FirefoxDriver","C: \\ProgramFiles(x86)\\MozillaFirefox\\firefox.exe"); WebDriverdriver=newFirefoxDriver(); driver.get(""); //
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- selenium 入门