selenium自动化测试02

小练习

测试注册功能

创建packa包 autotest02,创建class类 Reg.class 注册功能

获得注册网址(http://localhost:8088/index.php?m=user&c=public&a=reg


编写自动化测试的前置操作(打开浏览器,最大化,输入网址)

        //打开浏览器
        WebDriver driver = new FirefoxDriver();
        //窗口最大化
        driver.manage().window().maximize();
        //访问网址
        String url = "http://localhost:8088/index.php?m=user&c=public&a=reg";
        driver.get(url);

 前置操作已完成,接下来获取注册页面每一个输入框的元素,共6个

        //定位       错误测试数据
        driver.findElement(By.name("username")).sendKeys("1");
        driver.findElement(By.name("password")).sendKeys("2");
        driver.findElement(By.name("userpassword2")).sendKeys("3");
        driver.findElement(By.name("mobile_phone")).sendKeys("4");
        driver.findElement(By.name("email")).sendKeys("5");
        driver.findElement(By.className("reg_btn")).click();

 在此之前先注册账号,我们可以发现注册成功后会跳转网页,所以要给强制等待时间,然后进行判断

        // 强制等待10s
        Thread.sleep(10000);
        // 获取当前网页网址
        String nowUrl = driver.getCurrentUrl();
        // 比较注册后和注册前
        if (url.equals(nowUrl)) {
            System.out.println("注册失败");
            System.out.println("用例成功");
        } else {
            System.out.println("注册成功");
            System.out.println("用例失败");
        }

 代码整合,进行测试,输出结果

package org.example.autotest02;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class Reg {
    public static void main(String[] args) throws InterruptedException {
        //打开浏览器
        WebDriver driver = new FirefoxDriver();
        //窗口最大化
        driver.manage().window().maximize();
        //访问网址
        String url = "http://localhost:8088/index.php?m=user&c=public&a=reg";
        driver.get(url);

        //定位       错误测试数据
        driver.findElement(By.name("username")).sendKeys("1");
        driver.findElement(By.name("password")).sendKeys("2");
        driver.findElement(By.name("userpassword2")).sendKeys("3");
        driver.findElement(By.name("mobile_phone")).sendKeys("4");
        driver.findElement(By.name("email")).sendKeys("5");
        driver.findElement(By.className("reg_btn")).click();

        // 抓窗口中网址
        // 强制等待10s
        Thread.sleep(10000);
        // 获取当前网页网址
        String nowUrl = driver.getCurrentUrl();
        // 比较注册后和注册前
        if (url.equals(nowUrl)) {
            System.out.println("注册失败");
            System.out.println("用例成功");
        } else {
            System.out.println("注册成功");
            System.out.println("用例失败");
        }




    }

}

 


前情回顾

在selenium01里面讲了一些环境搭建,一些代码语法。在这里我们进行回顾一下

基础方法:

打开浏览器        WebDriver driver = new FixfoxDriver();

窗口最大化        driver.manage().window().maximize();        //防止窗口过小,个别元素显示不清 

访问网址        String url = "网址" 

                        driver.get(url)

获取当前网页网址        String nowurl = driver.getCurrentUrl();

强制等待        Thread.sleep(10000);  

关闭浏览器        driver.quit(); 

 元素定位:

driver.findElement()        只能定位符合规则的第一个元素/定位元素的方式尽量唯一/必须定位到元素,定位不到报错NoSuchElementException

By.id/name/className        使用元素里面的某属性定位元素 

元素操作: 

 .click();        点击元素

.sendKeys("要输入的数据")


开始编程 

我们先注册一个账户,然后进行登录,账号设置--》个人资料--》个人信息

在这里呢,我们先来感受一下,去模拟自动化的操作流程:首先呢,打开网页,输入网址,进入网站,输入账号密码,进行登录,网页跳转,进入到个人信息页面,点击账号设置,点击个人资料,然后修改个人信息。就这一套操作流程,我们可以代入到编程世界里面

创建class类ChangeUserInfo.java        修改用户信息

编写登录操作

package org.example.autotest02;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

import java.util.concurrent.TimeUnit;

public class ChangeUserInfo {
    public static void main(String[] args) {
        //前置
        WebDriver driver = new FirefoxDriver();
        driver.manage().window().maximize();
        //隐式等待  只有在完成当前操作后,才进行下一次操作
        driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
        //登录
        driver.get("http://localhost:8088/index.php?m=user&c=public&a=login");
        driver.findElement(By.id("username")).sendKeys("test123");
        driver.findElement(By.name("password")).sendKeys("123456");
        driver.findElement(By.className("login_btn")).click();
    }
}

 成功进入个人信息页面,然后观察一下当前页面,第一步我们要点击账号设置,右键检查,看看元素

是一个超链接形式的,我们可以使用linkText来定位元素,还有个人资料也是一样,还有一种定位方法partialLinkText来定位

        //修改个人信息
        //定位账号设置
        driver.findElement(By.linkText("账号设置")).click();
        driver.findElement(By.partialLinkText("个人资料")).click();

 接下来就是对输入框和确定按钮进行元素定位,直接右键检查,查找id、name和class

 在运行代码的时候我们会发现已经自动写进去了,然后我们再次运行的时候,会发现,输入的数据就写到当前的数据后面了,所以很难受,这时候呢,我们就可以用另一个语法.clear();清除

        driver.findElement(By.id("true_name")).clear();//clear:清除当前数据
        driver.findElement(By.id("true_name")).sendKeys("张三");

 性别一栏,有三个数据,我们可以使用xpath来进行定位,使用元素的名字和任意属性的值定位:"//元素名[@属性='属性值']"

        //点击男
        driver.findElement(By.xpath("//input[@value='1']")).click();

最后代码整合,进行测试

package org.example.autotest02;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

import java.util.concurrent.TimeUnit;

public class ChangeUserInfo {
    public static void main(String[] args) {
        //前置
        WebDriver driver = new FirefoxDriver();
        driver.manage().window().maximize();
        //隐式等待  只有在完成当前操作后,才进行下一次操作
        driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
        //登录
        driver.get("http://localhost:8088/index.php?m=user&c=public&a=login");
        driver.findElement(By.id("username")).sendKeys("test123");
        driver.findElement(By.name("password")).sendKeys("123456");
        driver.findElement(By.className("login_btn")).click();

        //修改个人信息
        //定位账号设置
        driver.findElement(By.linkText("账号设置")).click();
        driver.findElement(By.partialLinkText("个人资料")).click();

        driver.findElement(By.id("true_name")).clear();
        driver.findElement(By.id("true_name")).sendKeys("张三");
        driver.findElement(By.name("qq")).sendKeys("1234568");

        //点击男
        driver.findElement(By.xpath("//input[@value='1']")).click();

        driver.findElement(By.className("btn4")).click();

    }
}

 测试成功


创建方法 

我们可以发现,在进行登陆的时候,这一段代码使用非常多,为了减少代码的冗余,我们可以创建方法,之后进行调用

创建class类 LoginPage.java

package org.example.autotest02;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;

public class LoginPage {
    public static void loginWithUrl(WebDriver driver,String username,String password){
        driver.get("http://localhost:8088/index.php?m=user&c=public&a=login");
        loginTest(driver,username,password);
    }
    public static void loginTest(WebDriver driver,String username,String password){
        driver.findElement(By.id("username")).sendKeys(username);
        driver.findElement(By.name("password")).sendKeys(password);
        driver.findElement(By.className("login_btn")).click();
    }

}

 登录的方法我们已经完成了

接下来我们开始测试添加地址功能

添加地址

创建class类AddAddress.java 添加地址

我们来过一下流程,登录--》账号设置--》修改默认地址

 有六个需要输入的内容

   收件人姓名、详细地址、邮政编码、联系电话和添加地址按钮比较好办,主要来看一下寄送区域,这个属于下拉框,只有在第一项选择之后,第二项才能出来,不能越级

第一项未选择,我们可以看到是空的

第一项选择之后,第二项才会出来,但第三项没有出来

第一项和第二项选择之后,第三项才会出来

这样的一个顺序的过程,不能越级,否则找不到元素,会报错。这里我们可以使用xpath来定位元素,xpath("//option[@value = '110000']"),以北京为例,进行编写(当然还有更简单的方法,在03会提到)。

 所以整体代码如下

        driver.findElement(By.xpath("//option[@value = '110000']")).click();
        driver.findElement(By.xpath("//option[@value = '110100']")).click();
        driver.findElement(By.xpath("//option[@value = '110101']")).click();

开始编写,前置+登录方法调用 

        //前置
        FirefoxDriver driver = new FirefoxDriver();
        driver.manage().window().maximize();
        //隐式等待
        driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
        //登录
        LoginPage.loginWithUrl(driver,"test123","123456");

进行添加地址操作

        driver.findElement(By.linkText("账号设置")).click();
        driver.findElement(By.partialLinkText("个人资料")).click();
        driver.findElement(By.partialLinkText("收货地址")).click();
        driver.findElement(By.id("username")).sendKeys("赵四");
        driver.findElement(By.xpath("//option[@value = '110000']")).click();
        driver.findElement(By.xpath("//option[@value = '110100']")).click();
        driver.findElement(By.xpath("//option[@value = '110101']")).click();
        driver.findElement(By.id("address")).sendKeys("成华大道 二仙桥");
        driver.findElement(By.id("zip")).sendKeys("110000");
        driver.findElement(By.id("mobile")).sendKeys("15165236547");
        driver.findElement(By.className("btn3")).click();

 代码整合

package org.example.autotest02;

import org.openqa.selenium.By;
import org.openqa.selenium.firefox.FirefoxDriver;

import java.util.concurrent.TimeUnit;

public class AddAddress {
    public static void main(String[] args) {
        //前置
        FirefoxDriver driver = new FirefoxDriver();
        driver.manage().window().maximize();
        //隐式等待
        driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
        //登录
        LoginPage.loginWithUrl(driver,"test123","123456");

        driver.findElement(By.linkText("账号设置")).click();
        driver.findElement(By.partialLinkText("个人资料")).click();
        driver.findElement(By.partialLinkText("收货地址")).click();
        driver.findElement(By.id("username")).sendKeys("赵四");
        driver.findElement(By.xpath("//option[@value = '110000']")).click();
        driver.findElement(By.xpath("//option[@value = '110100']")).click();
        driver.findElement(By.xpath("//option[@value = '110101']")).click();
        driver.findElement(By.id("address")).sendKeys("成华大道 二仙桥");
        driver.findElement(By.id("zip")).sendKeys("110000");
        driver.findElement(By.id("mobile")).sendKeys("15165236547");
        driver.findElement(By.className("btn3")).click();

    }
}

测试结果成功

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇

)">
下一篇>>