`
celeskyking
  • 浏览: 25522 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Selenium2 webdriver的简单使用(基于163邮箱的写信功能)

 
阅读更多
WebDriver 的使用

     接触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对元素的定位会有帮助的。时间有限,下一章会讲解选择器的具体用法。今天先贴个完整点的小代码。先体会一下,熟悉一下基本的知识。 Selenium2
分享到:
评论

相关推荐

    selenium-webdriver离线包.rar

    在IT行业中,Selenium WebDriver是一个广泛使用的自动化测试工具,尤其在Web应用的自动化测试领域。它允许开发者编写脚本,模拟用户与浏览器的交互,从而进行功能性和回归性测试。这个压缩包“selenium-webdriver...

    selenium RC与selenium webdriver的区别

    Selenium WebDriver使用浏览器的native事件处理来模拟用户交互,支持多种浏览器和操作系统。Selenium WebDriver的主要优点是: * 支持浏览器的-native事件处理 * 提供了一个更灵活和强大的测试框架 * 支持更多的...

    ruby+selenium-webdriver测试--第一个例子源代码

    在这个“ruby+selenium-webdriver测试--第一个例子源代码”中,我们将探讨如何使用Ruby和Selenium-Webdriver实现自动化测试的初步步骤。 首先,我们需要安装必要的库。确保已经安装了Ruby,并通过RubyGems来安装...

    selenium2 webdriver中文文档完整

    本文档将详细介绍 Selenium2 WebDriver 的安装、配置、基本操作和使用技巧。 安装 Selenium WebDriver 1. 安装 Firefox:确保 Firefox 安装在默认环境下,不然会报错。 2. 安装 JDK:确保安装了 JDK,我使用的是 ...

    Selenium-Webdriver系列教程

    Selenium-Webdriver系列教程旨在引导读者理解和掌握Selenium 2.0,即WebDriver的核心概念、常用方法和高级功能。Selenium 1.x虽然已被弃用,但由于丰富的资源和历史积累,仍然被许多人广泛使用。然而,随着Selenium ...

    selenium+webdriver学习文档

    本文档主要介绍了使用 Selenium+WebDriver 进行自动化测试的学习方法,从基础到精通的学习方法。下面我们将对标题、描述、标签和部分内容进行详细的解释。 标题:selenium+webdriver学习文档 这是一个学习文档,...

    selenium-webdriver从入门到提高

    标题《Selenium-WebDriver从入门到提高》说明这是一本关于Selenium-WebDriver实用指南的书籍,旨在帮助读者从基础到进阶的各个层次上掌握Selenium-WebDriver的使用方法。Selenium-WebDriver作为一个自动化测试工具,...

    selenium webdriver基于python源码案例.pdf

    ### selenium webdriver基于python源码案例 #### 一、Selenium简介与环境搭建 **1.1 Selenium概述** Selenium是一个强大的工具集,主要用于自动化Web应用的测试。它支持多种编程语言,如Java、C#、Python等,并能...

    selenium-webdriver介绍PPT

    selenium-webdriver原创selenium-webdriver原创selenium-webdriver原创selenium-webdriver原创

    selenium.webdriver.4.1.0.nupkg

    Selenium 客户端和 WebDriver 语言绑定(Selenium Clients and WebDriver ...为了创建与 Selenium Server (Remote WebDriver) 交互的脚本或创建本地 Selenium WebDriver 脚本,您需要使用特定于语言的客户端驱动程序。

    selenium-webdriver-api文档

    这个文档,`selenium-API-2.12.chm`,是针对Selenium WebDriver 2.12版本的详细指南,对于理解和使用WebDriver API至关重要。 ### 1. WebDriver 概念 WebDriver 是一种接口,它提供了对浏览器的直接控制,支持多种...

    Selenium WebDriver实战宝典(吴晓华)

    本书是一本从入门到精通模式的Selenium WebDriver实战经验分享书籍。全书共分为四个部分:第1部分基础篇主要讲解自动化测试...第4部分为常见问题和姐解决办法,讲解了WebDriver使用过程中的常见疑难问题和解决办法。

    selenium+webdriver中文帮助手册(python版)

    个人最近开始学习Selenium,但发现对应python的有用的资料奇少无比,于是 自己努力收集并整理了一些资料 学会搭建环境后的同学,建议先抛弃其他一切资料,先看一遍这个python资料,保证收益匪浅,基本上可以动手做...

    selenium2.44 webdriver

    2. **导入库**:在你的编程环境中导入Selenium WebDriver的相关库。 3. **创建FirefoxDriver实例**:通过调用`webdriver.Firefox()`方法创建一个新的Firefox浏览器实例。 4. **导航到URL**:使用`get()`方法导航到...

    selenium3.0 webdriver+python3.0实例参考

    以下是一个简单的示例,展示了如何使用Python和Selenium打开网页并查找元素: ```python from selenium import webdriver # 初始化Chrome浏览器 driver = webdriver.Chrome() # 访问URL driver.get('...

    selenium_WebDriver_java版使用指南

    **Selenium WebDriver Java 版使用指南** Selenium WebDriver 是一个自动化测试工具,广泛用于Web应用程序的测试。在Java环境中,Selenium提供了丰富的API,使得我们可以编写脚本来控制各种浏览器进行自动化测试。...

    ruby+selenium-webdriver测试源代码003

    - 可能包含了使用Ruby和Selenium-Webdriver编写的自动化测试脚本,针对特定的网页或功能。 - 可能使用了面向对象编程,定义了多个测试类,每个类代表一个测试场景。 - 可能包含了数据驱动测试的实现,允许用不同...

    selenium+webdriver+python自动化测试

    将Python与Selenium WebDriver结合起来,可以创建功能强大的Web自动化测试工具。 在介绍“selenium+webdriver+python自动化测试”时,首先要了解以下几个核心知识点: 1. Selenium框架的组成:Selenium框架主要由...

    selenium-webdriver-2.24.0.gem

    使用gem安装selenium-webdriver;打开命令行,输入下列代码完成安装。注意,如果你的开发环境需要http proxy的话,请注意在gem命令中加入--http_proxy参数; gem install selenium-webdriver [--http_proxy] 在...

    Selenium WebDriver 所需jar包

    Selenium WebDriver是一款强大的自动化测试工具,它允许程序员模拟真实用户在浏览器上的操作,进行Web应用程序的功能测试和验收测试。在Java环境下,Selenium WebDriver通常需要引入相应的jar包才能正常工作。...

Global site tag (gtag.js) - Google Analytics