![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java+Selenium3POM自动化测试框架设计系列
文章平均质量分 77
Anthony_tester
这个作者很懒,什么都没留下…
展开
-
Java+Selenium3.0基础篇1-环境搭建
一.背景和目的 我大概是2015年开始接触Selenium这个web自动化测试框架。当时是selenium2.48好像,从Selenium2.0开始,就加入了webdriver,实际上,我们说的selenium自动化测试,大部分情况都是在使用webdriver的API。现在去Selenium官网,发现最新Selenium版本是3.4,我也不知道3.4和2.48之间有什么多大的区别和原创 2017-06-07 13:22:08 · 62975 阅读 · 24 评论 -
Java+Selenium3.0基础篇2-利用geckodirver启动firefox
本文介绍如何在Selenium3.0上,用Java脚本实现如何启动和关闭firefox浏览器。Selenium最显著的优点就是夸浏览器测试Web软件项目。所以第一个要掌握就是如何启动后浏览器,在三大浏览器里,我们先介绍启动火狐浏览器。直接来看相关代码,稍后解释。package lessons;import java.util.concurrent.TimeUnit;import o原创 2017-06-07 16:39:36 · 21863 阅读 · 45 评论 -
Java+Selenium3.0基础篇3-如何启动谷歌浏览器
接着前面一篇如何启动firefox浏览器,这篇介绍如何启动Chrome浏览器,代码几乎和前面一样,就导入包名称不同,有了前面的基础,很好理解。在lessons包下新建一个LaunchChrome.java类,写入如下内容。package lessons;import java.util.concurrent.TimeUnit; import org.openqa.selenium原创 2017-06-07 23:19:59 · 19964 阅读 · 16 评论 -
Java+Selenium3.0基础篇4-如何启动IE
本文介绍如何启动IE浏览器,由于IE浏览器的兼容性和不稳定性,我在实际测试过程中,基本上不用IE去测试自动化脚本。个人建议,你也不要去用IE测试Selenium自动化测试脚本,但是这里还是介绍下,如何启动IE浏览器。package lessons;import java.util.concurrent.TimeUnit; import org.openqa.selenium.WebD原创 2017-06-07 23:41:36 · 9839 阅读 · 5 评论 -
Java+Selenium3基础篇5-第一个自动化测试脚本
前面几篇我们介绍了环境搭建和三大浏览器的启动方法,这篇文章我们介绍第一个自动化测试脚本。我的个人经验是,自动化脚本编写比较容易,最大的困难去如何去写测试断言。自动化测试,最重要的还是落在测试上面,而不是自动化,自动化只是手段。断言的写法,就考验出一个测试工程师是否考虑全面,体现出你的用例编写水平。举例:验证打开链接是百度首页分析问题:我们输入了url,然后打开一个页面,如果判断这个页面原创 2017-06-08 22:51:57 · 29515 阅读 · 10 评论 -
Java+Selenium3方法篇0-如何在Eclipse上查看Selenium源码
前面基础篇系列文章,足够你可以对Seleniun入门,至少知道写你第一个基于Java的Selenium自动化测试脚本。接下来我们介绍Selenium方法篇,主要是介绍一些常用的Selenium方法后者接口,通过这些接口或者方法的具体操作,达到能够熟练使用Selenium编写Java的自动化测试脚本,并且,为后续的Java+Selenium自动化测试框架设计打基础。只有你完全玩过或者使用了里面的一些原创 2017-06-09 09:02:56 · 10358 阅读 · 1 评论 -
Java+Selenium3方法篇1-从代码角度去解释启动firefox的过程
通过前面文章,我们知道如何去查看Selenium相关接口或者方法。一般,我们看到更多的是接口,在查看源码的时候,你可以看着这个接口的备注备份,它会告诉你,这个接口或者方法的作用,有哪些参数,参数类型是什么。为了更好去描述和理解这个过程,我们举例,通过查找源码的方式去理解Selnium启动firefox的过程。System.setProperty("webdriver.gecko.driver"原创 2017-06-12 12:42:39 · 7103 阅读 · 0 评论 -
Java+Selenium3方法篇2-Timeout接口相关方法介绍
这一篇介绍manage()接口下常用方法的使用。从Selenium的源码文件,可以知道,manage是得到Option这类接口用的。本文介绍的方法,都是在Option这个接口下面可以找到的。Option接口是这样描述的:An interfacefor managing stuff you would do in a browser menu,所以,这些操作都是来控制浏览器本身。Timeout接原创 2017-06-13 14:06:07 · 12204 阅读 · 2 评论 -
Java+Selenium3方法篇3-window接口相关方法介绍
本文继续介绍WebDriver.java这个文件里面的接口方法,上一篇介绍了timeout接口内相关方法,这篇文章介绍window接口。windows接口下有几个方法,主要是用来控制浏览器窗口设置,例如窗口大小,最大,最小,全屏,位置。我们先来看看window接口下有什么方法。void setSize(Dimension targetSize);void setPosition(Poi...原创 2017-06-13 16:50:56 · 5780 阅读 · 4 评论 -
Java+Selenium3方法篇4-Navigation接口介绍
本文接着学习WebDriver,java这个类文件中的关于driver操作的接口,本篇介绍Navigation接口,主要包括平时浏览器的前进,后退,打开网址,刷新当前页操作。在Navigation接口下,我能找到下面四个方法:void back()void forward()void to(String url)void to(URL url)void refresh()原创 2017-06-13 23:34:17 · 5468 阅读 · 5 评论 -
Java+Selenium3方法篇5-findElement之By id
前面文章介绍了一些driver操作浏览器设置的一些接口,其中接口里面的一些方法,我们经常用到。现在开始介绍一些和元素相关的接口或者方法,web自动化测试的核心就是找到网页元素,并相应去操作元素。所以,我们接下来很大的文章篇幅都和元素查找和元素操作有关。要操作元素,先要找到元素,Selenium中findElement接口能支持八种方法去查找网页元素,今天这里,介绍By id的方法。原创 2017-06-15 12:59:22 · 16728 阅读 · 10 评论 -
Java+Selenium3方法篇6-findElement之By XPath
前面一篇,介绍了查找元素的方法By id,这篇来介绍By XPath。在如何写XPath表达式之前,你需要对XPath有一个基本了解,关于XPath入门,你可以点击这里。下面,通过百度首页,演示如何写百度搜索输入框和百度搜索按钮的XPath表达式。package lessons;import java.util.concurrent.TimeUnit;import org.open原创 2017-06-16 11:16:10 · 13998 阅读 · 1 评论 -
Java+Selenium3方法篇7-findElement之By LinkText
本篇继续讲webdriver查找元素方法,这篇介绍By LinkText方法。什么是linktext呢,就是我们在网页上看到有一个链接,上面有一个文字描述,点击这个文字,就可以跳转到其他页面。我们这里以百度首页举例,点击首页右上角那个新闻链接,观察是否进入到百度新闻页面。相关脚本代码如下:package lessons;import org.openqa.selenium.By;i原创 2017-06-16 12:32:54 · 14422 阅读 · 4 评论 -
Java+Selenium3方法篇8-findElement之By ClassName
本文继续介绍WebDriver关于元素定位系列方法,这篇介绍By ClassName。看到ClassName,LinkText,XPath,ID这些方法,所以说,要做好Web自动化测试,最好是需要了解一些前端的基本知识。有了前端知识,做元素定位会很轻松,同样写网络爬虫也很有帮助,话题扯远了,回到Selenium自动化测试。如何查找元素的ClassName,还是那句话,没有前端知识,就回到我之前写的原创 2017-06-16 22:49:19 · 14081 阅读 · 3 评论 -
Java+Selenium3方法篇9-findElement之By Name
本文来介绍Webdriver中元素定位方法之By name,顾名思义,就是我们想要定位的目标元素节点上,有一个name ="value"的属性,这样我们就可以通过name的value直接去找到这个元素。我们还是用百度首页搜索输入和点击提交来演示,由于搜索输入文本框有name属性,而点击提交没有name属性,所以,我们这里只有一个元素定位采用了By name。相关脚本代码如下。package原创 2017-06-16 22:57:42 · 3463 阅读 · 0 评论 -
Java+Selenium3方法篇10-findElement之By PartialLinkText
这篇介绍findElement系t列方法中的By partialLinkText,看到这个是不是会想起By LinkText,没错。如果你看到一个有文字链接的元素,上面文字太多,你不想写这么多文字,那么你就可以用partialLinkText,也就是用LinkText里面的一部分字符就可以定位该元素。这里建议,你选取的字符要有唯一性,也就是,根据你选取的字符,在当前页,只能找到你的目标元素。这里用原创 2017-06-17 10:30:55 · 7080 阅读 · 0 评论 -
Java+Selenium3方法篇11-findElement之By CSS
本文继续介绍findElement接口下查找元素的方法,这篇介绍根据CSS表达式去定位网页元素。你可能听说过,前端基础,静态网页主要使用HTML语言,动态效果,一般使用CSS还有JavaScpirt,现在流行的H5前端开发,也是HTML5+CSS+JavaScript。所以,自动化测试人员,或者测试开发工程师,真的有必要学习下前端的html,css,javascript等。在这个Java+Sele原创 2017-06-17 11:38:13 · 4052 阅读 · 0 评论 -
Java+Selenium3方法篇12-findElement之By TagName
本文介绍findElement接口中八大方法的最后一种,By Tagname,先要了解什么是tagname,我们在使用firepath查看网页元素的时候,全是开始的input 或者button,div,label等等,这些标签就叫tagname。一般利用tagname定位元素会出现很多个元素,单独找一个唯一的元素,利用tagname很难,所以一般和findElements接口配合使用,找到一组元素原创 2017-06-17 16:36:09 · 7865 阅读 · 6 评论 -
Java+Selenium3方法篇14-元素操作之输入和点击
前面文章介绍完了driver的一些常见的浏览器设置和查找元素的接口,接下来,我们找到了元素,是为了去操作元素。这篇介绍元素操作常见方法中的,给元素写入一个字符串,和点击元素。一般来讲,给元素输入一个字符串,这样的元素,一般是可以输入文本,基本上是inputbox这样的前端元素,还有些是textarea这样的元素。而点击元素,这个范围就大了,第一个肯定是点击按钮,除了按钮,单选,多选按钮,有些lab原创 2017-06-18 14:39:43 · 14434 阅读 · 3 评论 -
Java+Selenium3方法篇15-元素内清除文本操作
本篇介绍元素操作之清除文本,这个清除动作,我们经常用,例如在某一个网站登录界面,有时候有些设计会自动记录用户名,但是我们自动化测试,需要换一个用户名登录,这个时候,最好就先清除用户名输入框文字,然后重新输入。这个方法,很简单,我们直接用一个示例就可以掌握。package lessons;import java.util.concurrent.TimeUnit;import org.op原创 2017-06-18 22:54:37 · 8320 阅读 · 1 评论 -
Java+Selenium3方法篇16-driver方法获取当前页title
本篇介绍driver的一个方法,获取当前页的title。什么是title,你可以打开一个网页,按下F12,然后找到title这个标签,发现这个标签里的字符串就是我们平时在浏览器上看到的这个网页的标题。例如百度首页的title就是“百度一下,你就知道”,在webdriver中有一个driver的方法,driver.getTitle()就是用来得到当前页面的title的字段。在自动化测试过程中,为什么原创 2017-06-19 22:30:28 · 9084 阅读 · 1 评论 -
Java+Selenium3方法篇17-获取当前页面URL
本篇介绍获取当前页面的url,这个getCurrentUrl()是一个driver的方法,返回的当前driver所停留在的当前页的url。这个在自动化测试过程中是有必要的,例如在实际测试中,只会刚开始给一个测试url,开始测试,之后的其他页面,都是通过点击链接进行跳转的,所以,有时候需要判断新跳转的链接是不是正确的地址,这个时候就需要获取当前地址拿过来进行断言测试。实例:百度首页点击新闻这个链原创 2017-06-20 22:50:03 · 17171 阅读 · 1 评论 -
Java+Selenium3方法篇18-获取当前页的源码
本篇介绍webdriver中获取当前页面的源码,driver.getPageSource()的功能就类似,你打开一个网页,然后右键,选择查看源码一样效果。这个获取网页的源码,在网络爬虫中百分百是需要用到的。先来了解下,我们通过获取百度新闻首页的源码,打印到eclipse,看看效果。相关脚本代码如下:package lessons;import java.util.concurrent.原创 2017-06-20 22:59:29 · 7751 阅读 · 3 评论 -
Java+Selenium3方法篇19-获取浏览器窗体的句柄
先来解释下什么是句柄,有时候浏览器的窗口句柄,也叫windows id,英文单词更好理解。你打开了一个浏览器,你开一个tab,就生成了一个id,这个id直到你关闭这个tab才会消失。如果你在一个浏览器上打开多个tab,那么就有多个windows id,为什么你关闭其中一个tab,但是不影响其他tab的显示,就是这个id的作用。本文就是要介绍如何或者浏览器窗体的句柄或者叫编号,为后面的driver实原创 2017-06-20 23:14:53 · 8851 阅读 · 1 评论 -
Java+Selenium3方法篇20-浏览器退出quit和close的区别
本文介绍webdriver中关于浏览器退出操作。driver中有两个方法是关于浏览器关闭,一个叫quit,一个叫close。先来看看看两者的声明描述,请看下面声明文档。 /** * Close the current window, quitting the browser if it's the last window currently open. */ void clo原创 2017-06-21 16:03:57 · 15905 阅读 · 1 评论 -
Java+Selenium3方法篇21-webdriver处理浏览器多窗口切换
经过前面两篇文章的铺垫,我们这篇介绍,webdriver如何处理,一个浏览器上多个窗口之间切换的问题。我们先脑补这样一个测试场景,你在页面A点击一个连接,会在新的tab窗口打开页面B,这个时候,你在页面B点击一个连接,会在新的tab窗口打开页面C。这种情况,在测试中经常遇到,自动化中,webdriver是如何处理的呢。 我们先来看一个实例,在京东首页,点击手机,会在新的页面显示手机原创 2017-06-22 22:04:22 · 23344 阅读 · 10 评论 -
Java+Selenium3方法篇22-利用Javascript处理竖向滚动条
本篇介绍如何使用javascript脚本去处理竖向滚动条,例如有这样一个场景,你访问我的csdn主页,想下拉到当前页的地步,这个下拉,你会拖拽竖向滚动条到底部就实现了。这个过程,如果在webdriver的自动化测试,如何做呢。在webdriver中是没有拖动滚动条的方法的,需要借助javascript来根据一个页面元素去实现拖动滚动条的过程。本篇要学习两个知识点,一个是webdriver中如何执行原创 2017-06-23 22:34:37 · 8260 阅读 · 7 评论 -
Java+Selenium3方法篇23-iframe切换的问题
这篇介绍webdriver在处理定位元素报错,提示没有这样的元素。这个时候,有可能是你测试的网页,采用了frame技术。什么是frame,简单来说,就是把一个网页划分成多个子页面,脑补这下这样的页面。我把一个空白的html文件,使用了frame技术后,分成两个页面,左边显示百度首页,右边显示谷歌首页。这个就是frame的简单使用。webdriver默认查找的元素都是Top window这层,如原创 2017-06-24 22:42:05 · 11867 阅读 · 3 评论 -
Java+Selenium3方法篇24-单选和多选按钮操作
本篇介绍webdriver处理前端单选按钮的操作。单选按钮一般叫raido button,就像我们在电子版的单选答题过程一样,单选只能点击一次,如果点击其他的单选,之前单选被选中状态就会变成未选中。单选按钮的点击,一样是使用click方法。下面我们介绍百度新闻首页中有两个单选按钮,我们根据for选好,依次点击第一个,然后点击第二个,由于第一个是默认选中状态,所以看不到第一个点击的效果。相关脚本原创 2017-06-24 23:18:48 · 7362 阅读 · 8 评论 -
Java+Selenium3方法篇25-isDisplayed方法
本篇介绍webdriver自动化测试中,经常需要进行判断的一个场景。例如,有些操作,我们做了之后,会触发一些提醒,有些是正确的提醒,有些是红色字体显示的错误提示。我们自动化里面如何去捕获这些字段,如果进行测试自动化判断呢。这里,用百度登录举例,判断“请输入验证码”这个字段出现在正确的位置上。webdriver中有一个方法isDisplayed()来判断这个元素是否显示,相关脚本如下。p原创 2017-06-25 22:53:19 · 11177 阅读 · 9 评论 -
Java+Selenium3方法篇26-处理Alert弹窗
前面几篇文章介绍了switchTo方法,这篇继续介绍switchTo中关于处理alert弹窗的问题。很多时候,我们进入一个网站,就会弹窗一个alert框,有些我们直接关闭,有些可能有取消和确定按钮,还有些调查的alert框,可以运行用户输入文字,例如预定一个网站的资讯,输入邮箱地址就可以,每天接收一封该网站推送的邮件。以下我找到了一个alert例子,只有点击确定这个按钮,alert框才会消失。原创 2017-06-26 22:32:22 · 8812 阅读 · 3 评论 -
Java+Selenium3方法篇27-利用JS处理元素高亮显示
这篇来玩一个好玩的测试,就是利用javascript让测试过程中的元素高亮显示,例如在登录框,让输入框背景颜色设置成黄色,边框设置2个像素,颜色是空色。这个问题,我在一家公司的笔试题上看见过,所以这里就实现了测试下。相关脚本如下。package lessons;import java.util.concurrent.TimeUnit;import org.openqa.selenium原创 2017-06-26 22:50:15 · 5526 阅读 · 4 评论 -
Java+Selenium3方法篇28-Actions-鼠标悬停
有些事件,Selenium没有直接提供方法去操作,像鼠标悬停,一般测试场景鼠标悬停分两种常见,一种是鼠标悬停在某一个元素上方,然后会出现下拉子菜单,第二种就是在搜索输入过程,选择自动补全的字段。关于鼠标悬停,selenium把这个方法放在了Actions.java文件中,先来看看鼠标悬停出现下拉菜单的情况。package lessons;import java.util.concurren原创 2017-06-27 23:06:38 · 13326 阅读 · 6 评论 -
Java+Selenium3方法篇29-Actions-划取字段
本文介绍Actions类下第二个功能,划取字段。我之前做过一个项目,需要在一堆log字符中随机划取一段文字,然后右键选择摘取功能。这篇,就介绍划取字段这个功能,直接看下面的脚本。package lessons;import java.util.concurrent.TimeUnit;import org.openqa.selenium.By;import org.openqa.sel原创 2017-06-28 22:46:47 · 3163 阅读 · 6 评论 -
Java+Selenium3方法篇30-Selenium中截图方法-TakeScreenshot
前面几篇介绍了Actions类中两种方法,本来打算介绍右键,然后类似点击向下箭头这样操作,但是在现在的firefox和chrome都不能正常实现,记得之前selenium2.53是可以在firefox上实现的。本篇介绍Selenium中截图类TakeScreenshout,这个类主要是获取浏览器窗体内的内容,不包括浏览器的菜单和桌面的任务栏区域,我们用百度首页来截图,看看截图效果。原创 2017-06-28 23:33:57 · 13099 阅读 · 9 评论 -
Java+Selenium3方法篇31-利用Robot类截图
前面我们介绍了Selenium中TakeScreenshot类来截图,得到的图片是浏览器窗口内的截图。有时候,只截浏览器窗口内的图是不够的,而且TakeScreenshot截图只针对浏览器的web事件,假如你在运行脚本过程,windows上有一个其他软件弹出了一个购物的弹窗页面,这个时候就会干扰你截图。所以,有时候我们需要整个屏幕截图,这个时候我们就需要用到Robot这个类。原理大概是,从电脑屏幕原创 2017-06-29 22:17:48 · 4864 阅读 · 1 评论 -
Java+Selenium3方法篇32-处理不安全连接
本篇介绍webdriver处理不信任证书的情况,我们知道,有些网站打开是弹窗,SSL证书不可信任,但是你可以点击高级选项,继续打开不安全的链接。举例来说,大家都应该用过12306网站购票,点击新版购票,是不是会出现如下的界面。先来看看chrome上如何处理这个,跳过图中这个步骤,直接到买票页面。package lessons;import org.openqa.selenium.W原创 2017-06-30 22:51:41 · 6632 阅读 · 3 评论 -
Java+Selenium3方法篇33-Actions-拖拽操作
本文补充Actions类中的拖拽操作,之前没有找到相应的demo网站来介绍拖拽操作,今天找到了一个,所以,补上一个Selenium中处理拖拽的场景例子。拖拽的动作定义是,一个元素从起始位置拖动到目标位置,这个过程叫拖拽。直接来看看下面的脚本实现过程。package lessons;import java.util.concurrent.TimeUnit;import org.openq原创 2017-07-01 11:30:32 · 4038 阅读 · 1 评论 -
Java+Selenium3方法篇34-如何处理日历控件
这篇介绍webdriver如何处理日历控件,有些web产品,网页上有一些时间选择,然后支持按照不同时间段范围去筛选数据。网页上日历控件一般,是一个文本输入框,鼠标点击,就会弹出日历界面,可以选择具体日期。这篇,就是介绍用selenium如何自动化脚本实现。1.先看一个完全模仿手工操作的场景,点击输入框,点击下一个月,选择17日。当前是2017=07-01,假如我们要设置成2017-08-17.原创 2017-07-01 21:23:10 · 6352 阅读 · 0 评论 -
Java+Selenium3方法篇35-如何点击菜单下子菜单
这篇介绍如何操作菜单下有一个option的菜单,这个控件在前端是这样的,点击一个倒三角,下面有好几个选项。文字描述不够清晰,我们直接看图。我们看到速度选择菜单下有5个菜单,我们用数组遍历的方式来点击Fast这个菜单。package lessons;import java.util.List;import java.util.concurrent.TimeUnit;import原创 2017-07-01 22:19:01 · 7494 阅读 · 7 评论