Java+Selenium3基础篇5-第一个自动化测试脚本
前面几篇我们介绍了环境搭建和三大浏览器的启动方法,这篇文章我们介绍第一个自动化测试脚本。我的个人经验是,自动化脚本编写比较容易,最大的困难去如何去写测试断言。自动化测试,最重要的还是落在测试上面,而不是自动化,自动化只是手段。断言的写法,就考验出一个测试工程师是否考虑全面,体现出你的用例编写水平。
举例:验证打开链接是百度首页
分析问题:
我们输入了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-第一个自动化测试脚本相关推荐
- JAVA多线程基础篇-关键字synchronized
1.概述 syncronized是JAVA多线程开发中一个重要的知识点,涉及到多线程开发,多多少少都使用过.那么syncronized底层是如何实现的?为什么加了它就能实现资源串行访问?本文将基于上述 ...
- Java面试基础篇之集合
文章目录 你知道的集合都有哪些? 哪些集合是线程安全的? Collection 集合类和数组有什么不同? Collection和Collections有什么区别? 如何确保一个集合不能被修改? Lis ...
- Java - ip2region - 基础篇(你知道ip2region吗?)
Java - ip2region - 基础篇(你知道ip2region吗?) 本篇主要介绍 ip2region, ip2region 支持很多客户端,本次主要以Java来介绍 在进行系统开发时,我们一 ...
- java实现linkstring,【JAVA SE基础篇】32.String类入门
[JAVA SE基础篇]32.String类入门 1.字符串 1.String类又称作不可变字符序列 2.String位于java.lang包中,java程序默认导入java.lang包下所有的类 3 ...
- java 中间容器 表格_【JAVA SE基础篇】45.迭代器、Collections工具类以及使用容器存储表格...
本文将要为您介绍的是[JAVA SE基础篇]45.迭代器.Collections工具类以及使用容器存储表格,具体完成步骤: 1.迭代器 迭代器为我们提供了统一遍历容器(List/Map/Set)的方式 ...
- Java零基础系列001——第一个程序
Java零基础系列001--第一个程序 public class Welcome {public static void main(String[] args) {//args为arguments的缩 ...
- java预科基础篇2021.2.3学习记录
java预科基础篇2021.2.3学习记录 初识博客 本以为老师会讲是在微博上写博客做记录,没想到会是很多程序员专用的博客 博客为音译,正确翻译结果为网络日记,英文为bog 较为专业的程序员用博客为: ...
- java se运算符优先级,【JAVA SE基础篇】10.运算符优先级与类型转换
[JAVA SE基础篇]10.运算符优先级与类型转换 1.运算符的优先级 运算符的优先级在考试中会考,了解即可,多用就会熟能生巧 实际使用过程中建议用小括号来分优先级 关键就是:逻辑非>逻辑与& ...
- JAVA红石_【Mc我的世界红石研究日记】第四期:红石基础元件(四)——JAVA版基础篇...
Hello,大家好,欢迎来到Mc元气工作室!本期给大家带来Mc我的世界红石研究日记·第四期!版本:JAVA1.14.3. 第三期答题互动答案 以下哪一个选项被红石比较器检测出的红石信号与其他三项不同? ...
最新文章
- SAP SD 客户信贷管理解析
- Azure平台管理员必须了解的安全问题
- ROS系统 C++或Python实现订阅者Subscriber
- MySQL各部门求最值_mysql 求分组最大值的十个解法
- 至于你信不信,我反正是信了——以类为单位的编程思想
- go 中gcc 编译问题(gcc.exe fatal error no input files compilation terminated)
- 小米CC9 Pro同款一亿像素摄像头有望被三星Galaxy S11采用
- MonoCSharp Evaluator Extension
- SwiftUI iOS 精品开源之 具有货币转换功能的iOS计算器 网络后端汇率API (教程含源码)
- java边缘检测_Sobel边缘检测实现
- Linux-tftp、tftpd-pha安装、使用、配置教程
- 《深入理解Android 卷III》第八章深入理解Android壁纸
- 年度催泪之作:2015中国程序员生存报告
- SQL server 将不等于hit的全部删除
- 软件设计之——“高内聚低耦合”
- 服务器c盘清理文件,服务器c盘满了怎么清理? 服务器c盘空间不足清理方法
- 解决vue重复点击路由报错问题:Uncaught (in promise) NavigationDuplicated
- 招聘工作者和面试官的特征
- 2022-06-29 银河麒麟V10 Nginx-rtmp+FFmpeg流媒体服务器环境搭建
- 小学计算机网络教室上机制度,网络教室上机登记制度