美文网首页软件测试
软件测试攻略(二十三):界面自动化之Selenium入门

软件测试攻略(二十三):界面自动化之Selenium入门

作者: DayBreakL | 来源:发表于2018-06-05 18:41 被阅读14次

    Selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。

    一、selenium入门

    1. 环境搭建
      (1)JDK
      (2)myeclipse + maven + selenium + testNG
      (3)chrome 浏览器 + chrome driver (driver版本与chorme版本对应)
    2. 新建工程
      (1)新建一个web工程添加maven支持
    • 上篇已经提供,New 工程时勾选Add maven选项。
    • 在web工程,/src/main/java中New一个package,命名为autoui,在这个文件夹下New一个Class文件,命名为FirstAuto。
      (2)pom.xml文件中添加selenium和testNG的依赖。
    <!-- selenium界面自动化 -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>2.50.0</version>
        </dependency>
    
    <!--testNG测试框架 -->
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.8</version>
        </dependency>
    

    将这段代码复制到web工程的pom.xml文件中


    image.png

    (3)chromedriver.exe

    • 查看浏览器版本


      image.png
      image.png
    • 查看浏览器版本对应chrome driver 对应版本
      chrome与chrome driver 对应版本及下载地址
      image.png
    • 在/src/main/resources文件夹下New一个Folder,命名格式为“driver_driver的版本_适用的浏览器版本”。例:我的文件名为driver_2_38_v65-67。
    • 将下载好的chrome driver .exe拖入该文件夹下。


      image.png
    1. 设置环境变量
      System.setProperty(变量名,chromedriver的路径)
    //设置环境变量,指定chromedriver的路径
     System.setProperty("webdriver.chrome.driver",
                  "src/main/resources/driver_2_38_v65-67/chromedriver.exe");
    
    1. 基本操作
      (1)最大化窗口
      首先,我们要设置浏览器的参数,这样才能对chrome 做一些特殊的设置。
     //设置浏览器的参数,才能操作浏览器
     ChromeOptions options = new ChromeOptions();
     //最大化浏览器
    options.addArguments("--test-type", "--start-maximized");
    

    (2)打开浏览器

    WebDriver driver = new ChromeDriver();
    

    (3)打开网页

    driver.navigate().to("url");
    driver.get(url);
    

    (4)操作导航栏

    //前进
     driver.navigate().forward();
    //后退
    driver.navigate().back();
    //刷新
    driver.navigate().refresh();
    

    (5)等待时间


    image.png

    这是等待时间1000毫秒的意思,但是系统会报错,鼠标放置在代码上时会给出提示,选择第二个“surround with try/catch ”,就会自动写为如下代码


    image.png
    这个是没有问题的。
    如何我们需要频繁使用,可以把它封装成一个方法
    image.png

    需要使用时调用即可。

    (6)元素定位


    image.png

    (7)元素操作

    • text文本输入框:
      清除文本输入框中的内容 .clear();
      向文本框中输入内容 .sendkeys("文本内容")
    • button按钮: 点击 .click();

    (8)关闭浏览器

    driver.close();//只关闭了浏览器,没有关闭浏览器驱动
    driver.quit(); //既关闭浏览器,又关闭浏览器驱动
    
    
    1. 实例
    实例一:登录页面正常流

    思路:模仿手工操作步骤:
    step1 进入登录页面。
    step2 光标放到用户名框,输入正确用户名。
    step3 光标放到密码框,输入正确密码。
    step4 光标放到验证码框,输入正确的验证码,点击登录按钮。
    光标放置,就是定位,输入用户名密码验证码就是对定位的元素进行输入。

    • 定位元素


      image.png

      通过id定位,F12查看源代码获取id的值,值为"userName"。

    driver.findElement(By.id("userName"));
    

    我们用一个变量来存放这个定位,数据类型为WebElement:

    WebElement userName =driver.findElement(By.id("userName"));
    
    • 操作元素
      文本框可能会有默认值,所以我们先对文本框的内容进行清除:
     userName.clear();
    

    再对文本框中输入文本内容:

      userName.sendKeys("guoya");
    
    • 登录页面正常流代码实例如下:
    public static void main(String[] args) {
            //设置环境变量,指定chromedriver的路径
            System.setProperty("webdriver.chrome.driver",
                    "src/main/resources/driver_2_38_v65-67/chromedriver.exe");
            //设置浏览器的参数
           ChromeOptions options = new ChromeOptions();
            //最大化浏览器
           options.addArguments("--test-type", "--start-maximized");
            //打开浏览器
            WebDriver driver = new ChromeDriver();
            //打开要测的登录页面
            driver.get("http://47.98.226.232:8080/guoya-medium/jsp/user/login.jsp");
            //定位用户名文本框
            WebElement userName =driver.findElement(By.id("userName"));
            //先清除用户名文本框的内容
            userName.clear();
            //向文本框中输入正确的用户名
            userName.sendKeys("guoya");
          //定位密码框
            WebElement password =driver.findElement(By.id("password"));
            //先清除文本框的内容
            password.clear();
          //向文本框中输入正确的密码
            password.sendKeys("Aa123!");
            //定位验证码文本框
            WebElement checkCode =driver.findElement(By.id("checkCode"));
            //先清除文本框的内容
            checkCode.clear();
          //向文本框中输入正确的验证码
            checkCode.sendKeys("12345");
            //定位登录按钮
            WebElement loginBtn =driver.findElement(By.id("loginBtn"));
            //点击登录按钮
            loginBtn.click();
    }
    
    实例二:查询页面正常流

    点击登录之后,我们进入了查询页面。


    image.png

    真实姓名、用户名、年龄、查询按钮上面已经提过,现在重点说下下拉框和时间控件。

    1. select 下拉框
      我们通过F12只能定位到select标签,需要把select标签封装成Select对象(select对象中封装了找select下面所有option的操作)


      1
    Select select=new Select(select多选框的定位结果);
    

    选择第一个补全内容,就会自动引进import org.openqa.selenium.support.ui.Select;


    image.png
    image.png
    Select select =new Select(driver.findElement(By.name("education")));
    select.selectByValue("1");
    
    image.png

    选择的多种方式:

    select.selectByIndex(序号); //序号从0开始,即第一个选项序号为0
    select.selectByValue("value值");//option标签的value的值
    select.selectByVisibleText("文本内容");//option标签的文本内容
    
    1. date 时间控件

    我们需要通过JavaScript代码来定位元素,修改元素的value值,但是java里面无法使用js语言。
    首先用JS里面书写定位元素和修改元素的value的代码;

    var startTimes=document.getElementsByName("startTime");//定位时间控件开始时间的元素
    var startTime= startTimes[0];
    startTime.value="2018-05-01";//修改时间
    

    把这段代码在MyEclipse中放入一个字符串变量中。

    String js ="var startTimes=document.getElementsByName("startTime");var startTime= startTimes[0];startTime.value="2018-05-01";"
    

    强制转型:

    JavascriptExecutor jsDriver = (JavascriptExecutor) driver;//将java中的driver强制转型为JS类型
    

    执行JS代码的方法:

    jsDriver.executeScript(js);
    

    相关文章

      网友评论

        本文标题:软件测试攻略(二十三):界面自动化之Selenium入门

        本文链接:https://www.haomeiwen.com/subject/keopsftx.html