Selenium自动化测试介绍

   (本文欢迎转载,只需附上来源:https://blog.csdn.net/actionwind/article/details/103437712)

    Selenium是用于web自动化测试的工具,这次来介绍一下它的使用。

    Selenium由好几部分组成,我们今天主要说的是它的WebDriver部分,这部分需要测试者自己编写脚本代码。

    一、首先来介绍一下它的Java开发环境的搭建:

    1、首先安装jdk,详细的安装设置方法我这里就不说了,网上教程一搜一大把,总之先把它装好;

    2、安装Eclipse,安装方法同上,哈哈

    3、在Eclipse中新建一个java工程,在菜单File->Properties ->Java Build Path -> Libraries中导入Selenium的jar包。

       (jar包到官网下载,比如说我下载的是selenium-java-3.141.59.zip,解压后里面有两个jar,全部导入,里面还有个libs文件夹,里面的jar也全部导入。)

        好,至此,相应的开发环境就全部搭建好了,一共三大步,很简单吧。

       事实上,为了让写好的脚本代码能够运行,还需要启动浏览器的驱动器,比如我用Firefox,它的驱动器叫做GeckoDriver,也同样是在官网下载,然后在代码指明它的路径并调用即可,下文会说到。

 

    二、好了,既然环境已经搭好,那就来写一个简单的测试用例:

package com.mypro.jase;

import java.util.*;
import org.junit.Assert;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
 

public class TestLibrary extends Assert {
    private WebDriver driver;
    
    @Test //有这个标志就会让下面这个方法成为一条测试用例
    public void test1() {

        //首先设置好浏览器驱动器:
        System.setProperty("webdriver.gecko.driver", "e:\\copy\\geckodriver.exe");
        
        //新建一个ff浏览器驱动器对象
        driver=new FirefoxDriver();

        //访问你想测试的网页
        driver.get("http://szlhlib.org.cn/");
        
        //点击搜索框
        WebElement searchBox=driver.findElement(By.id("key"));
        searchBox.click();
        
        //设置要搜索的内容
        searchBox.sendKeys("人性的弱点\n");
        
        //点击搜索按钮,将会打开新的页面窗口显示搜索结果(本想用点击按钮进行搜索,但发现这个网站的搜索按钮有问题。找到bug了,有空跟这个网站的人提交一下bug,哈哈)
      //        WebElement searchButton=driver.findElement(By.id("doSearch"));
      //        searchButton.click();
        
        //跳转到搜索结果的窗口,这里采用url来判断所跳转到的是否为目标窗口
        Set handles=driver.getWindowHandles();
          //对窗口进行遍历,直到找到所指定的窗口(好像selenium就是这么愚蠢,不能直接跳转到指定窗口,没办法)
        for(String s:handles){
            driver.switchTo().window(s);
            if(driver.getCurrentUrl()=="http://219.134.63.22/Search/searchshow.jsp?v_tablearray=bibliosm%2C&v_book=on&eventsite=WWW-044010&v_index=all&v_value=%E4%BA%BA%E6%80%A7%E7%9A%84%E5%BC%B1%E7%82%B9&cirtype=&v_startpubyear=&v_endpubyear=&v_publisher=&v_author=&sortfield=score&sorttype=desc&pageNum=10")
                break;            
        }
       
       //加个延迟,否则下面的点击操作太快执行的话会找不到相应的元素
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        
        //再试一下点击其中一个搜索结果。
        driver.findElement(By.linkText("卡耐基经典全集:《人性的弱点》《美好的人生》/(美)卡耐基著;詹衡宇译"))
        .click();      

       //加个延迟,否则下面的断言太快执行的话会找不到相应的元素
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }  

      //断言,用于检查测试结果,如果指定的元素没找到会输出指定的错误信息。(需要注意的是,断言需要写在一个测试用例的末尾,否则如果为False的时候在测试报告中不会被记录为Failure,而是Error。)
        assertTrue("《人性的弱点》没找到。", check(driver,By.partialLinkText("人性的弱点")));
          
    }
    
    //此方法用于判断页面元素是否存在
    public static Boolean check(WebDriver driver,By seletor) {
        try {
            driver.findElement(seletor);
            return true;
        } catch (Exception e) {
            // TODO: handle exception
            return false;
        }
    }

}

写好后点击Eclipse的Run按钮它就会自动打开浏览器运行测试了。

补充说明一点:在代码中获取并控制网页中的页面组件元素,Selenium用的是By类,需要先在浏览器中要查看元素的属性。可以使用浏览器的开发者模式查看,

在Firefox中是点击菜单中的Web Developer-> Inspector。
在Chrome中是点击菜单中的更多工具->开发者工具。
在IE中按快捷键F12就行了。

进去开发者界面之后三者都是点击左上角的指针状图标,然后将鼠标移动到要定位的页面元素即可看到它的属性。

在写这段代码的时候的一个小心得:如果提示说找不到页面元素,可以考虑一下是否在操作步骤之间加一个延迟。

 

三、接下来学一下如何导出测试报告:

       Selenium导出测试报告有很多种方法,我觉得简单的方法是用Junit的报告,因为Java版的Selenium本来就结合了Junit,所以就直接用它的测试报告,详细的步骤有一位朋友已经无私分享出来,大家可以看看:
       https://blog.csdn.net/haorenmin2008/article/details/44201549
       不过这篇介绍有个小小的纰漏,那就是在第三步没有说要勾选junitreport选项,这样的话不会生成网页版的报告。勾上就可以了。

      如果过程中遇到ant版本过低的问题,这里有解决方案:https://www.jianshu.com/p/d1d0c1f08f40

      好,到此为止一个完整的自动化测试过程已经介绍完毕,当然,其实还有很多细节需要去学习和研究,大家好好加油吧!

你可能感兴趣的:(Selenium自动化测试介绍)