selenium自动化测试01

前言 

新人一个,打算写写博客,去记录个人的学习历程。

花了一周的时间去学习了selenium自动化,然后记录下来,一些语法、代码之类的。

文笔不是很好,一些代码标注、注释可能不是很准确,望见谅。

selenium自动化测试呢我用的是Java+maven,工具是IDEA。我在学习自动化的时候用的是eclipse,我习惯用IDEA,看个人喜好了。(要有Java编程基础,Java的话可能会在后续上线,还没写)

介绍

自动化测试,顾名思义,是使用机器软件替代手工执行测试用例。

自动化测试分类:分为自动功能、自动接口、自动单元测试。

自动化测试前提:需求相对稳定,手工测试通过后,项目周期长,脚本复用性强。

搭建环境

一、Java-jdk1.8版本的,具体安装步骤的话去搜,这里就不详细介绍了。环境变量要配好,新建JAVA_HOME,Path,%JAVA_HOME\bin。完成之后可以去dos窗口(win+r 输入cmd)输入java、javac、java -version看看有没有安装成功。

二、开发工具我用的是IDEA,直接去官网下载即可:IntelliJ IDEA: The Capable & Ergonomic Java IDE by JetBrains

三、maven,我用的是3.6.3版本,直接去官网下载:Maven – Maven Releases History

注意,在使用之前,必须安装配置好JDK。这里引用一位大佬文章:史上最全安装Maven教程_小Du猿的博客-CSDN博客

去dos窗口输入mvn、mvn -v检查有没有安装成功

四、与IEDA进行关联 

 file-->settings-->maven

五、浏览器,我用的是火狐浏览器,有两点:必须是安装版和必须是默认安装路径。否则会报错

六、驱动程序,geckodriver,去官网下载:geckodriver Mirror

然后把geckodriver.exe文件复制到D:\apache-maven-3.6.3\bin里面(你的maven安装路径)

打开dos输入geckodriver

七、结束了,环境都差不多弄完了,接下来就是编写自动化测试脚本:编写代码控制浏览器,实际脚本控制驱动,驱动控制浏览器,浏览器控制网页

开始编程

创建项目:file--》new--》project--》maven--》打对勾--》选择maven-archetype-quic'kstart--》next--》项目名称路径名自己写--》然后maven home path选择自己安装maven的路径--》finsh

然后等待加载(需要联网)


然后去修改pom.xml导入需要的jar文件

<dependency>
  <groupId>org.seleniumhq.selenium</groupId>
  <artifactId>selenium-java</artifactId>
  <version>3.14.0</version>
  <scope>test</scope>
</dependency>

复制粘贴 

 然后保存,右上角会出来一个小小的m,点一下就可以

左边界面如图所示,如果是这样,那说明都OK了,接下来就开始编码了。注意,所有代码要写在test文件里面,不要写在main里面。


 创建package包(右键package),创建class类(包名右键class)。

 测试用的网站,服务器可以去搜一下(开源的)。我用的是phpfind,百度也能下载,要是用的是phpfind,把端口号改成8088其他不用改,启动就可以


首先,测试一下能否自动打开网站(http://localhost:8088/

然后,输入脚本,测试能否自动打开浏览器,网站

package org.example.autotest01;

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

public class Demo {
    public static void main(String[] args) {
        WebDriver driver = new FirefoxDriver();
        driver.get("http://localhost:8088/");
    }
}

打开成功!可以看到浏览器输入栏有红色标志,机器人的头,说明机器已经代管 


接下来我们开始测试登录功能(因为第一次打开这个网站,没有注册,所以写一个脚本测试登录功能, 输入一组错误的用户名和密码, 预期结果是登录失败)

在这个网页,点击登录,然后复制网址(http://localhost:8088/index.php?m=user&c=public&a=login)新建class类(Login.java)

测试能否进入登录界面

package org.example.autotest01;

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

public class Login {
    public static void main(String[] args) {
        // 写一个脚本测试登录功能, 输入一组错误的用户名和密码, 预期结果是登录失败

        // 打开浏览器
        WebDriver driver = new FirefoxDriver();
        // 浏览器窗口最大化     因为有的打开网站的时候窗口特别小,所以要窗口最大化
        driver.manage().window().maximize();
        //访问网址
        driver.get("http://localhost:8088/index.php?m=user&c=public&a=login");
    }
}

登录页面测试成功 


接下来开始测试输入账号和密码,右键输入框,选择检查(F12不可以,可能有数据不同,会报错)然后定位元素(id,name,class三种选择)复制定位元素,输入用户名的元素是username,密码元素是password

// 找到用户名和密码框,输入对应测试数据
driver.findElement(By.id("username")).sendKeys("test123");//findElement 查找定位元素 sendKeys 向定位到的元素输入数据
driver.findElement(By.id("password")).sendKeys("123456");

 然后点击登录按钮,右键检查元素,我们可以发现他只有class,所以我们就定位class元素,然后class里面是login_btn fl,这时候我们选择(推荐)第一个,也就是login_btn,否则的话会报错

// 找到并点击登录按钮
driver.findElement(By.className("login_btn")).click();//click() 点击定位到的元素

代码整合,然后就完成了登录测试功能

在登录过程中,我们可以发现登录时会有网页跳转(会有等待时间)所以我们要给他添加一个强制等待时间,添加这段代码会报错,点击add就可以

获取登录结果,作用就是进行比较。在此之前我们先注册一个账号,然后进行登录,把登陆成功后的网址复制下来(http://localhost:8088/index.php?m=user&c=index&a=index)两两进行比较,预期网址和实际网址进行比较。

//获取操作结果    sjwz:实际网址
String sjwz = driver.getCurrentUrl();//获取当前浏览器中的网址
// 和预期结果进行比较 取2个值进行比较
//预期网址就是登录网址 yqwz:预期网址
String yqwz = "http://localhost:8088/index.php?m=user&c=public&a=login";
//sjwz.equals(yqwz)比较2个字符串是否一致  一致是true  不一致是false
if (sjwz.equals(yqwz)){
        System.out.println("登录失败,用例通过");
    }else {
        System.out.println("登录成功,用例失败---bug");
}

 最后代码整合,进行测试

package org.example.autotest01;

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

public class Login {
    public static void main(String[] args) throws InterruptedException {
        // 写一个脚本测试登录功能, 输入一组错误的用户名和密码, 预期结果是登录失败

        // 打开浏览器
        WebDriver driver = new FirefoxDriver();
        // 浏览器窗口最大化     因为有的打开网站的时候窗口特别小,所以要窗口最大化
        driver.manage().window().maximize();
        //访问网址
        driver.get("http://localhost:8088/index.php?m=user&c=public&a=login");

        // 找到用户名和密码框,输入对应测试数据
        driver.findElement(By.id("username")).sendKeys("test123");//findElement 查找定位元素 sendKeys 向定位到的元素输入数据
        driver.findElement(By.id("password")).sendKeys("123456");
        // 找到并点击登录按钮
        driver.findElement(By.className("login_btn")).click();//click() 点击定位到的元素
        // 等待5s登录操作完成
        Thread.sleep(5000);
        //获取操作结果    sjwz:实际网址
        String sjwz = driver.getCurrentUrl();//获取当前浏览器中的网址
        // 和预期结果进行比较 取2个值进行比较
        //预期网址就是登录网址 yqwz:预期网址
        String yqwz = "http://localhost:8088/index.php?m=user&c=public&a=login";
        //sjwz.equals(yqwz)比较2个字符串是否一致  一致是true  不一致是false
        if (sjwz.equals(yqwz)){
            System.out.println("登录失败,用例通过");
        }else {
            System.out.println("登录成功,用例失败---bug");
        }


    }
}

输出结果 


第一次写博客,可能有些地方不足,有纰漏,望谅解

Guess you like

Origin blog.csdn.net/qq_45193253/article/details/121807906