前面几篇我们介绍了环境搭建和三大浏览器的启动方法,这篇文章我们介绍第一个自动化测试脚本。我的个人经验是,自动化脚本编写比较容易,最大的困难去如何去写测试断言。自动化测试,最重要的还是落在测试上面,而不是自动化,自动化只是手段。断言的写法,就考验出一个测试工程师是否考虑全面,体现出你的用例编写水平。

举例:验证打开链接是百度首页

分析问题:

我们输入了url,然后打开一个页面,如果判断这个页面是不是我们提前知道的页面呢。

1. 获取当前url是不是和输入的一致,假如链接没有发生重定向。

2. 获取当前页面title,是不是我们期待的结果。

3. 在页面元素body找一个特征元素,这个特征元素能够代表是该网站。

我想,也大概只有上面三点依据可以判断我们访问的网站对不对。第一点,有时候不靠谱,不知道你们是否听说过盗链,就是输入一个网站URL,显示的内容是别人的网站,而不是你测试的网站。甚至有链接的重定向出现。第二点,还是比较考虑,title这个值是网站前端开发同学写入的,基本上可以代表是你要打开的网站。第三点,有点难找这样的特征元素,而且有时候找到了也不一定是正确的。下面的代码就用页面的title来作为我们判断的依据。

package lessons;import java.util.concurrent.TimeUnit;import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;public class FirstScript {public static void main(String[] args) {System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");  WebDriver driver = new ChromeDriver();  driver.manage().window().maximize();  driver.manage().timeouts().implicitlyWait(8, TimeUnit.SECONDS);     driver.get("https://www.baidu.com");  //判断title是不是 百度一下,你就知道try{String baidu_title = "百度一下,你就知道";assert baidu_title == driver.getTitle();System.out.println("Test Pass");}catch(Exception e){e.printStackTrace();}//关闭并退出浏览器  driver.quit();  }}

Java中有一个方法叫assert,中文意思叫断言,assert后面跟着的是一个表达式,表达式的值是布尔型。上面的例子就是,当判断表达式值是true,就打印Tess Pass。这里可以看到,我把断言部分代码放在try cathc语句中。编写脚本或者编写代码要养成一个好习惯,习惯主动去捕获异常,并处理异常。这里我们自动化脚本,基本上没有需要去处理异常,一般选择直接打印出异常信息就可以。

到这里,Selenium WebDriver基础篇就结束了,下面的文章,主要是介绍WebDriver的一些常见接口或者方法的实际使用,尽量多介绍一些Selenium方法,为后面的方法封装和框架设计做铺垫。

Java+Selenium3基础篇5-第一个自动化测试脚本相关推荐

  1. JAVA多线程基础篇-关键字synchronized

    1.概述 syncronized是JAVA多线程开发中一个重要的知识点,涉及到多线程开发,多多少少都使用过.那么syncronized底层是如何实现的?为什么加了它就能实现资源串行访问?本文将基于上述 ...

  2. Java面试基础篇之集合

    文章目录 你知道的集合都有哪些? 哪些集合是线程安全的? Collection 集合类和数组有什么不同? Collection和Collections有什么区别? 如何确保一个集合不能被修改? Lis ...

  3. Java - ip2region - 基础篇(你知道ip2region吗?)

    Java - ip2region - 基础篇(你知道ip2region吗?) 本篇主要介绍 ip2region, ip2region 支持很多客户端,本次主要以Java来介绍 在进行系统开发时,我们一 ...

  4. java实现linkstring,【JAVA SE基础篇】32.String类入门

    [JAVA SE基础篇]32.String类入门 1.字符串 1.String类又称作不可变字符序列 2.String位于java.lang包中,java程序默认导入java.lang包下所有的类 3 ...

  5. java 中间容器 表格_【JAVA SE基础篇】45.迭代器、Collections工具类以及使用容器存储表格...

    本文将要为您介绍的是[JAVA SE基础篇]45.迭代器.Collections工具类以及使用容器存储表格,具体完成步骤: 1.迭代器 迭代器为我们提供了统一遍历容器(List/Map/Set)的方式 ...

  6. Java零基础系列001——第一个程序

    Java零基础系列001--第一个程序 public class Welcome {public static void main(String[] args) {//args为arguments的缩 ...

  7. java预科基础篇2021.2.3学习记录

    java预科基础篇2021.2.3学习记录 初识博客 本以为老师会讲是在微博上写博客做记录,没想到会是很多程序员专用的博客 博客为音译,正确翻译结果为网络日记,英文为bog 较为专业的程序员用博客为: ...

  8. java se运算符优先级,【JAVA SE基础篇】10.运算符优先级与类型转换

    [JAVA SE基础篇]10.运算符优先级与类型转换 1.运算符的优先级 运算符的优先级在考试中会考,了解即可,多用就会熟能生巧 实际使用过程中建议用小括号来分优先级 关键就是:逻辑非>逻辑与& ...

  9. JAVA红石_【Mc我的世界红石研究日记】第四期:红石基础元件(四)——JAVA版基础篇...

    Hello,大家好,欢迎来到Mc元气工作室!本期给大家带来Mc我的世界红石研究日记·第四期!版本:JAVA1.14.3. 第三期答题互动答案 以下哪一个选项被红石比较器检测出的红石信号与其他三项不同? ...

最新文章

  1. SAP SD 客户信贷管理解析
  2. Azure平台管理员必须了解的安全问题
  3. ROS系统 C++或Python实现订阅者Subscriber
  4. MySQL各部门求最值_mysql 求分组最大值的十个解法
  5. 至于你信不信,我反正是信了——以类为单位的编程思想
  6. go 中gcc 编译问题(gcc.exe fatal error no input files compilation terminated)
  7. 小米CC9 Pro同款一亿像素摄像头有望被三星Galaxy S11采用
  8. MonoCSharp Evaluator Extension
  9. SwiftUI iOS 精品开源之 具有货币转换功能的iOS计算器 网络后端汇率API (教程含源码)
  10. java边缘检测_Sobel边缘检测实现
  11. Linux-tftp、tftpd-pha安装、使用、配置教程
  12. 《深入理解Android 卷III》第八章深入理解Android壁纸
  13. 年度催泪之作:2015中国程序员生存报告
  14. SQL server 将不等于hit的全部删除
  15. 软件设计之——“高内聚低耦合”
  16. 服务器c盘清理文件,服务器c盘满了怎么清理? 服务器c盘空间不足清理方法
  17. 解决vue重复点击路由报错问题:Uncaught (in promise) NavigationDuplicated
  18. 招聘工作者和面试官的特征
  19. 2022-06-29 银河麒麟V10 Nginx-rtmp+FFmpeg流媒体服务器环境搭建
  20. 小学计算机网络教室上机制度,网络教室上机登记制度

热门文章

  1. PMP考试计算题汇总
  2. 深圳GMP洁净车间设计基本要求SICOLAB
  3. Linux面试题汇总-3
  4. 华为固件解包工具linux,华为app固件解包工具下载
  5. 《网络编程》基本 TCP 套接字编程
  6. Java转换json数据输出
  7. lcms质谱仪_液相色谱质谱联用仪LCMS中常见现象及解释
  8. 【A_star三维路径规划】基于matlab A_star算法无人机三维路径规划【含Matlab源码 446期】
  9. 委托代理设计模式(协议)
  10. 12月第3周易盾业务风控关注 | 中央网信办要求经脱敏处理的信息才可公开