前言

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

花了一周的时间去学习了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  不一致是falseif (sjwz.equals(yqwz)){System.out.println("登录失败,用例通过");}else {System.out.println("登录成功,用例失败---bug");}}
}

输出结果


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

selenium自动化测试01相关推荐

  1. Selenium自动化测试驱动下载

    Selenium自动化测试准备,免不了驱动下载: 常用的谷歌浏览器驱动 http://npm.taobao.org/mirrors/chromedriver/

  2. python写界面输入测试脚本_python+Selenium自动化测试——输入,点击操作

    这是我的第一个真正意思上的自动化脚本. 1.练习的测试用例为: 打开百度首页,搜索"胡歌",然后检索列表,有无"胡歌的新浪微博"这个链接 2.在写脚本之前,需要 ...

  3. Selenium3自动化测试——1. 新建第一个Selenium自动化测试脚本

    在安装好Python.PyCharm和Selenium后,开始进行第一个Selenium自动化测试脚本. 1. 对百度首页进行编写如下代码: from selenium import webdrive ...

  4. python测试脚本项目全程教程_《手把手教你》系列练习篇之5-python+ selenium自动化测试(详细教程)...

    1. 简介 今天我们继续前边的练习,学习和练习一下:如何使用webdriver方法获取操作复选框-CheckBox.测试不同的分辨率.如何断言title.如何获取某一个元素的text属性值等等,这些小 ...

  5. 《Selenium自动化测试指南》—第1章1.1节自动化测试基础

    本节书摘来自异步社区<Selenium自动化测试指南>一书中的第1章1.1节自动化测试基础,作者赵卓,更多章节内容可以访问云栖社区"异步社区"公众号查看. 1.1 自动 ...

  6. 自从掌握了Selenium自动化测试框架设计,我在公司都横着走!

    测试工作对技术的要求不低,测试工程师更是高技能职位.但有很多新入行的伙伴认为,测试工作就是钟"点"工,用鼠标在软件点里点~点~点~就能做测试.这种思维是很可怕的,这会对测试人的职业 ...

  7. selenium自动化测试框架_selenium自动化测试框架之PO设计模式

    面向对象的特性:封装.继承.多态.在自动化中一样适用,Selenium自动化测试中有一个名字常常被提及PageObject(思想与面向对象的特性相同),通过PO模式可以大大提高测试用例的维护效率. 传 ...

  8. selenium自动化测试_49自动化测试中最常见的Selenium异常

    selenium自动化测试 开发人员将始终在编写代码时牢记不同的场景,但是在某些情况下,实现可能无法按预期工作. 相同的原则也适用于测试代码,该代码主要用于测试现有产品的功能,发现bug并确保产品10 ...

  9. selenium自动化测试_维持Selenium测试自动化的完美方法

    selenium自动化测试 毫无疑问, 自动浏览器测试已改变了软件开发的工作方式. 如果不是Selenium,我们将无法像我们一样使用各种各样的无错误的Web应用程序. 但是有时,甚至IT部门也误解了 ...

  10. selenium自动化测试_为什么在生产中进行Selenium自动化测试对于您的下一个版本至关重要?...

    selenium自动化测试 您是否认为仅仅是因为您的Web应用程序在过渡环境中以飞快的速度通过,它对于生产环境也将是相同的? 您可能需要重新考虑! 特别是,如果我们指的是跨浏览器测试 ,则需要确保跨各 ...

最新文章

  1. SQL Server-聚焦什么时候用OPTION(COMPILE)呢?
  2. WIN10 关闭驱动签名
  3. volunteer research
  4. Python爬虫开发:url中文字符编码的两种解决方式
  5. asp.net 由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值...
  6. oracle数据库连接数超了,oracle数据库当前和最大连接数
  7. linux kvm服务,Linux-让Kvm虚拟机开放服务端口!
  8. 【FLink】Flink 消费 kafka 消费组 死掉 Marking the coordinator dead for group 造成数据重复消费
  9. Spring : Spring配置文件加载位置
  10. 事件触发控制_基于事件触发机制的直流微电网多混合储能系统分层协调控制方法...
  11. laravel php artisan migrate 数据迁移时出现的[HY000][1045]错误
  12. PyQt窗口设计之Qt Designer
  13. 利用python制作动态二维码
  14. notes系统服务器地址,在Notes客户端和Domino服务器上,服务器地址的缓存(Cache)存放在哪里...
  15. 生活中图像处理的一个小应用
  16. 接入小程序客服(java版教程),处理第一次主动推送会话超时问题
  17. 在HTML中实现两个div并排显示
  18. mysql users 命令大全_mysql 命令大全
  19. 闲来没事学Dart(七)函数
  20. 深圳 不是你呆的地方

热门文章

  1. Android蓝牙完全学习手册
  2. JNPF.java前后端分离框架,SpringBoot+SpringCloud开发微服务平台
  3. [Android][Kernel]基于crash工具搭建分析ramdump的平台
  4. 性能测试_cpu使用率和平均负载简述
  5. 物联网行业常用术语(含软件和硬件)
  6. c++字符串逆序输出
  7. Gears Android WIFI/基站定位源代码分析
  8. 51单片机学习制作定时闹钟及《花海》演奏
  9. 2020神舟几号发射_2020广东事业单位考试:神舟飞船小知识的考点提炼
  10. 1.1 半导体基础知识