???? 交流讨论:欢迎加入我们一起学习!
???? 资源分享:耗时200+小时精选的「软件测试」资料包
???? 教程推荐:火遍全网的《软件测试》教程
????欢迎点赞 ???? 收藏 ⭐留言 ???? 如有错误敬请指正!
前言
新人一个,打算写写博客,去记录个人的学习历程。
花了一周的时间去学习了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猿的博客-****博客
去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");
-
}
-
}
-
}
输出结果
第一次写博客,可能有些地方不足,有纰漏,望谅解
最后我邀请你进入我们的【软件测试学习交流群:785128166】, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路
作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:程序员二黑】自提!