selenium自动化测试

 ???? 交流讨论:欢迎加入我们一起学习!

???? 资源分享耗时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/

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

 
  1. package org.example.autotest01;

  2. import org.openqa.selenium.WebDriver;

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

  4. public class Demo {

  5. public static void main(String[] args) {

  6. WebDriver driver = new FirefoxDriver();

  7. driver.get("http://localhost:8088/");

  8. }

  9. }

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


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

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

测试能否进入登录界面

 
  1. package org.example.autotest01;

  2. import org.openqa.selenium.WebDriver;

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

  4. public class Login {

  5. public static void main(String[] args) {

  6. // 写一个脚本测试登录功能, 输入一组错误的用户名和密码, 预期结果是登录失败

  7. // 打开浏览器

  8. WebDriver driver = new FirefoxDriver();

  9. // 浏览器窗口最大化 因为有的打开网站的时候窗口特别小,所以要窗口最大化

  10. driver.manage().window().maximize();

  11. //访问网址

  12. driver.get("http://localhost:8088/index.php?m=user&c=public&a=login");

  13. }

  14. }

登录页面测试成功 


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

 
  1. // 找到用户名和密码框,输入对应测试数据

  2. driver.findElement(By.id("username")).sendKeys("test123");//findElement 查找定位元素 sendKeys 向定位到的元素输入数据

  3. driver.findElement(By.id("password")).sendKeys("123456");


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

 
  1. // 找到并点击登录按钮

  2. driver.findElement(By.className("login_btn")).click();//click() 点击定位到的元素


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

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

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

 
  1. //获取操作结果 sjwz:实际网址

  2. String sjwz = driver.getCurrentUrl();//获取当前浏览器中的网址

  3. // 和预期结果进行比较 取2个值进行比较

  4. //预期网址就是登录网址 yqwz:预期网址

  5. String yqwz = "http://localhost:8088/index.php?m=user&c=public&a=login";

  6. //sjwz.equals(yqwz)比较2个字符串是否一致 一致是true 不一致是false

  7. if (sjwz.equals(yqwz)){

  8. System.out.println("登录失败,用例通过");

  9. }else {

  10. System.out.println("登录成功,用例失败---bug");

  11. }


 最后代码整合,进行测试

 
  1. package org.example.autotest01;

  2. import org.openqa.selenium.By;

  3. import org.openqa.selenium.WebDriver;

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

  5. public class Login {

  6. public static void main(String[] args) throws InterruptedException {

  7. // 写一个脚本测试登录功能, 输入一组错误的用户名和密码, 预期结果是登录失败

  8. // 打开浏览器

  9. WebDriver driver = new FirefoxDriver();

  10. // 浏览器窗口最大化 因为有的打开网站的时候窗口特别小,所以要窗口最大化

  11. driver.manage().window().maximize();

  12. //访问网址

  13. driver.get("http://localhost:8088/index.php?m=user&c=public&a=login");

  14. // 找到用户名和密码框,输入对应测试数据

  15. driver.findElement(By.id("username")).sendKeys("test123");//findElement 查找定位元素 sendKeys 向定位到的元素输入数据

  16. driver.findElement(By.id("password")).sendKeys("123456");

  17. // 找到并点击登录按钮

  18. driver.findElement(By.className("login_btn")).click();//click() 点击定位到的元素

  19. // 等待5s登录操作完成

  20. Thread.sleep(5000);

  21. //获取操作结果 sjwz:实际网址

  22. String sjwz = driver.getCurrentUrl();//获取当前浏览器中的网址

  23. // 和预期结果进行比较 取2个值进行比较

  24. //预期网址就是登录网址 yqwz:预期网址

  25. String yqwz = "http://localhost:8088/index.php?m=user&c=public&a=login";

  26. //sjwz.equals(yqwz)比较2个字符串是否一致 一致是true 不一致是false

  27. if (sjwz.equals(yqwz)){

  28. System.out.println("登录失败,用例通过");

  29. }else {

  30. System.out.println("登录成功,用例失败---bug");

  31. }

  32. }

  33. }

输出结果 


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

最后我邀请你进入我们的【软件测试学习交流群:785128166】, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:程序员二黑】自提!

上一篇:Django中ValueError: localtime cannot be applied to a naive datetime


下一篇:【MongoDB】数据的自动过期,TTL索引-1. 前言