Selenium2 webdriver的简单使用(基于163邮箱的写信功能)
2012-07-14 00:37
399 查看
WebDriver 的使用
接触webdriver有一段日子了,因为朋友也是做测试的,所以专门方便一下需要入门的人们,打算专门写一篇简单的webdriver的使用说明,虽然网上有很多的使用说明的文章不少,但是真正的例子不是很多,所以写一遍很简单的163发信的例子。至于一些webdriver需要扩张的知识,会在以后的日子,慢慢的添加进来,现在开始学习webdriver喽~
我一般用的是java和python,为了方便朋友学习,我这里用java来讲解,因为java比较容易入门。
在官网上有一个工具叫做seleniumIDE,它的版本和firefox的版本更新同步的,所以保持自己的firefox可以用最新版的seleniumIDE。它是firefox的一款插件,也许有些人听说过selenium,尤其是刚接触过QTP的人来说,认为自动化工具都是一种能够录制的软件,其实selenium2是一套API,基于很多种语言,灵活性很高。seleniumIDE只是一种辅助的工具,其实完全可以抛弃IDE来自己编写整个测试脚本的过程。
selenium2其实就是webdriver+selenium1,selenium1就是以前的RC版本,它需要搭建RC服务器作为中转,虽然语法简单,但是处理一些页面元素却是比较吃力。我推荐使用的是webdriver。毕竟是selenium2的主推API,废话不多说,至于其中的区别,自行参考度娘。
你需要在官网下载webdriver的JAR包,在http://seleniumhq.org/download/这个网址下载,选择java和server的包。webdriver还可以结合JUnit4和TestNG来编写脚本,为了方便开发,我使用的是eclipse3.7版本。至于JUnit4和TestNG的使用,在以后的文章中会有介绍。
在Eclipse中创建一个java project,名字你可以随便起,我起的名字是163mailTest。然后再创建一个包,我创建的包名为sky.test.org.autotest。因为是入门级别的,所以在这里我不讲解其中的设计模式,selenium官网上有pageobject的设计模式,可以自己先看一下,大致了解一下模式是什么样的。但是在我们设计测试的时候还是要有一定的思想。因为代码如果完全拥挤在一个main里面对代码的维护也会造成影响。所以保持一份良好的编写习惯也很重要。我自己的编写代码习惯可以推荐给你们,对于一些不太需要写框架的测试来说,应该算是减小查找工作了。在我们测试的过程中,用例不外乎就是打开xxx浏览器,在登陆窗口输入什么,在密码处输入什么,然后点击什么,再然后就是一系列的操作了。但是webdriver中的api只是提供的操作页面的方法,并没有做更多的封装,所以自己在编写的过程要简单的封装一下,可以把用例的过程封装起来,可以封装成对象或者方法。这样每次调用的时候只需要按照用例就可以写了,具体实现完全封装起来。即使测试的页面发生变化,我们做的只是改变一下封装的代码就可以了,完全不用去更改流程上的那些代码。减少了维护的成本。具体的设计模式在以后的文章中会讲解的。
第一个webdriver的例子:
打开浏览器。
webdriver支持很多种浏览器。IE,Firefox,chrome等,但是chrome是需要安装驱动的,因为驱动都是由谷歌公司来维护的。具体内容自行度娘了,不多说,我是用firefox来做的例子。
这只是一个打开百度首页的方法。Webdriver是一个接口,而FirefoxDriver是webdriver的一个实现类。因为webdriver的实例化对象其实同时继承了很多种接口,但是有时候用的时候需要强制类型转换,要不然会报错。
因为是访问163邮箱,所以邮箱自己去申请,假设我的邮箱是lazy@163.com,密码是123456,现在我把整个从登陆到发送邮件的所有代码贴出来。我要给我自己的163邮箱发邮件(我的邮箱是celeskyking@163.com)。
代码中有些地方是专门写成某种方式的,可以不去深究这样写怎么样怎么样不好,为了方便讲解。先说说最简单的也是很重要的一点,webdriver的一个核心就是元素的定位。因为你要是访问网页的话,做一些的具体操作需要操作页面的元素,因为页面都是由html组成的,所以操作页面也就是操作html的各种标签,和各种的事件触发,想准确的定位到页面的具体位置,webdriver提供了丰富的定位手段。有基于id,class,css selector,xpath,dom,js(可以使用jquery,方法以后会讲到)。这些其实都是最基本的html的知识,如果对html没有了解的话,可以去W3Cshoocl去学习一下简单的html的知识,顺便学习一下js的只是,因为了解js对元素的定位会有帮助的。时间有限,下一章会讲解选择器的具体用法。今天先贴个完整点的小代码。先体会一下,熟悉一下基本的知识。
本文出自 “木小懒的木屋” 博客,请务必保留此出处http://celeskyking.blog.51cto.com/3198983/930549
接触webdriver有一段日子了,因为朋友也是做测试的,所以专门方便一下需要入门的人们,打算专门写一篇简单的webdriver的使用说明,虽然网上有很多的使用说明的文章不少,但是真正的例子不是很多,所以写一遍很简单的163发信的例子。至于一些webdriver需要扩张的知识,会在以后的日子,慢慢的添加进来,现在开始学习webdriver喽~
selenium 2
官网地址:http://seleniumhq.org/我一般用的是java和python,为了方便朋友学习,我这里用java来讲解,因为java比较容易入门。
在官网上有一个工具叫做seleniumIDE,它的版本和firefox的版本更新同步的,所以保持自己的firefox可以用最新版的seleniumIDE。它是firefox的一款插件,也许有些人听说过selenium,尤其是刚接触过QTP的人来说,认为自动化工具都是一种能够录制的软件,其实selenium2是一套API,基于很多种语言,灵活性很高。seleniumIDE只是一种辅助的工具,其实完全可以抛弃IDE来自己编写整个测试脚本的过程。
selenium2其实就是webdriver+selenium1,selenium1就是以前的RC版本,它需要搭建RC服务器作为中转,虽然语法简单,但是处理一些页面元素却是比较吃力。我推荐使用的是webdriver。毕竟是selenium2的主推API,废话不多说,至于其中的区别,自行参考度娘。
你需要在官网下载webdriver的JAR包,在http://seleniumhq.org/download/这个网址下载,选择java和server的包。webdriver还可以结合JUnit4和TestNG来编写脚本,为了方便开发,我使用的是eclipse3.7版本。至于JUnit4和TestNG的使用,在以后的文章中会有介绍。
在Eclipse中创建一个java project,名字你可以随便起,我起的名字是163mailTest。然后再创建一个包,我创建的包名为sky.test.org.autotest。因为是入门级别的,所以在这里我不讲解其中的设计模式,selenium官网上有pageobject的设计模式,可以自己先看一下,大致了解一下模式是什么样的。但是在我们设计测试的时候还是要有一定的思想。因为代码如果完全拥挤在一个main里面对代码的维护也会造成影响。所以保持一份良好的编写习惯也很重要。我自己的编写代码习惯可以推荐给你们,对于一些不太需要写框架的测试来说,应该算是减小查找工作了。在我们测试的过程中,用例不外乎就是打开xxx浏览器,在登陆窗口输入什么,在密码处输入什么,然后点击什么,再然后就是一系列的操作了。但是webdriver中的api只是提供的操作页面的方法,并没有做更多的封装,所以自己在编写的过程要简单的封装一下,可以把用例的过程封装起来,可以封装成对象或者方法。这样每次调用的时候只需要按照用例就可以写了,具体实现完全封装起来。即使测试的页面发生变化,我们做的只是改变一下封装的代码就可以了,完全不用去更改流程上的那些代码。减少了维护的成本。具体的设计模式在以后的文章中会讲解的。
第一个webdriver的例子:
打开浏览器。
webdriver支持很多种浏览器。IE,Firefox,chrome等,但是chrome是需要安装驱动的,因为驱动都是由谷歌公司来维护的。具体内容自行度娘了,不多说,我是用firefox来做的例子。
import org.openqa.selenium.*; import org.openqa.selenium.firefox.FirefoxDriver; public class WriteLetter{ private String url = "www.baidu.com"; public void openFirefox(){ WebDriver driver = new FirefoxDriver(); driver.get(url); } }
这只是一个打开百度首页的方法。Webdriver是一个接口,而FirefoxDriver是webdriver的一个实现类。因为webdriver的实例化对象其实同时继承了很多种接口,但是有时候用的时候需要强制类型转换,要不然会报错。
因为是访问163邮箱,所以邮箱自己去申请,假设我的邮箱是lazy@163.com,密码是123456,现在我把整个从登陆到发送邮件的所有代码贴出来。我要给我自己的163邮箱发邮件(我的邮箱是celeskyking@163.com)。
package sky.test.org.autotest; import java.util.ArrayList; import java.util.List; import org.openqa.selenium.*; import org.openqa.selenium.firefox.FirefoxDriver; public class WriteLetter { WebDriver driver = new FirefoxDriver(); public void openfirefox(String url){ driver.get(url); } public void loginin(String username, String passwd){ driver.findElement(By.id("idInput")).sendKeys(username); driver.findElement(By.id("pwdInput")).sendKeys(passwd); driver.findElement(By.id("loginBtn")).click(); } public void clickWriteButton(){ driver.switchTo().frame("index"); driver.findElement(By.className("nY")).click(); driver.switchTo().defaultContent(); } public void WriteWord(String emailAddr, String theme, String edit){ driver.switchTo().frame("index"); List <WebElement> list = new ArrayList<WebElement>(); list = driver.findElements(By.className("g-addr-editable-ipt")); list.get(1).sendKeys(emailAddr); driver.findElement(By.id("objComposeSubject")).sendKeys(theme); driver.switchTo().frame(driver.findElement(By.className("g-editor-iframe"))); driver.findElement(By.tagName("body")).sendKeys(edit); driver.switchTo().defaultContent(); } public void closeFirefox(){ driver.close(); } public void sendMessage(){ driver.switchTo().defaultContent(); driver.switchTo().frame("index"); driver.findElement(By.className("frame-main")).findElements(By.id("text")).get(0).click(); driver.switchTo().defaultContent(); } public static void main(String[] args) throws InterruptedException { WriteLetter wl = new WriteLetter(); wl.openfirefox("http://mail.163.com"); wl.loginin("lazy@163.com","123456"); Thread.sleep(2000); wl.clickWriteButton(); Thread.sleep(3000); wl.WriteWord("celeskyking", "just a test", "hello,world!"); Thread.sleep(5000); wl.sendMessage(); Thread.sleep(4000); wl.closeFirefox(); } }
代码中有些地方是专门写成某种方式的,可以不去深究这样写怎么样怎么样不好,为了方便讲解。先说说最简单的也是很重要的一点,webdriver的一个核心就是元素的定位。因为你要是访问网页的话,做一些的具体操作需要操作页面的元素,因为页面都是由html组成的,所以操作页面也就是操作html的各种标签,和各种的事件触发,想准确的定位到页面的具体位置,webdriver提供了丰富的定位手段。有基于id,class,css selector,xpath,dom,js(可以使用jquery,方法以后会讲到)。这些其实都是最基本的html的知识,如果对html没有了解的话,可以去W3Cshoocl去学习一下简单的html的知识,顺便学习一下js的只是,因为了解js对元素的定位会有帮助的。时间有限,下一章会讲解选择器的具体用法。今天先贴个完整点的小代码。先体会一下,熟悉一下基本的知识。
本文出自 “木小懒的木屋” 博客,请务必保留此出处http://celeskyking.blog.51cto.com/3198983/930549
相关文章推荐
- selenium2 webdriver 简单使用
- selenium WebDriver的简单使用
- Selenium2(webdriver)入门之TestNG的安装与简单使用
- selenium2 webdriver 简单使用
- selenium WebDriver简单使用
- 使用SeleniumWebDriver开始自动化-简单示例
- Selenium2(webdriver)入门之TestNG的安装与简单使用
- 总结Selenium WebDriver中一些鼠标和键盘事件的使用
- 在Jmeter中使用Selenium WebDriver完成测试
- 在Jmeter中使用Selenium WebDriver完成测试
- Selenium WebDriver使用经验杂记
- Selenium Webdriver 的使用java执行js代码 解决 ScriptEngine不支持浏览器内置对象window,document的问题
- Selenium WebDriver中一些鼠标和键盘事件的使用
- (NodeJS学习文章收集三) node.js基于express框架搭建一个简单的注册登录Web功能
- windows7 32bit node.js 使用Selenium webdriver问题记录
- WebDriver的简单使用
- selenium(java)之RemoteWebDriver的基本使用
- Python抓取网页动态数据——selenium webdriver的使用
- 使用Selenium测试Web界面时使用循环控制功能
- 在Selenium WebDriver中使用By.Xpath快速定位页面元素