框架搭建
基于maven+jdk8+junit5+seleium 构建
驱动下载
下载地址 :http://chromedriver.storage.googleapis.com/index.html
基于当前 浏览器的版本
测试demo
截图方法:takesscreenshot接口是依赖于具体的浏览器api操作的
执行
用列录制
使用seleniumide 录制
新建一个录制project
输入网站开始录制,并在录制的网页上执行搜索
录制结果
当test越来越多时,可以将多个test归类到suites中,suites就像小柜子
创建项目时,ide会创建一个默认suite,并将第一个test添加到其中,你可以点击test,在下拉菜单中选中test suites进入suites管理界面
首先进入suites管理界面,点击`+`,提供名称,然后单击add:
将鼠标悬停在`suite1`上,点击三个点弹出suites管理菜单:
可以对`suite1`进行管理,包括添加test,重命名,删除,设置,导出
导出的用例
用例的编写
定位方法
执行分析:
driver的初始化,每个测试用例执行都可以通过这个一个方法获得一个driver.get()打开一个网址
find_element(by.定位符,")
一个页面还没有完全加载完全,点击这个元素,发现这个元素是有问题的,元素找不到或者不可点击,等等,可以强行加sleep(不推荐)
每个元素定位的时候,都会去find_element查找一个元素,在这个时候,通常我们需要引入一个新的机制,这个机制叫做隐式等待,解决元素找不到的问题,在规定的时间内,自动的去等待元素的出现,元素找到了,但是状态不对,不可点击也会报错
等待方式
隐式等待:
设置一个等待时间轮询(默认0.5s)查找 元素是否出现 (服务端)
driver.manage().timeouts().implicitlywait(5, timeunit.seconds);
显式等待:
在客户端本地每隔0.5s巡查下条件是否匹配 需要 实例化 webdriverwait
在代码中定义等待条件,当条件发生时才继续执行代码`webdriverwait`配合until()方法,根据判断条件进行等待
程序每隔一段时间(默认为0.5秒)进行条件判断,如果条件成立,则执行下一步,否则继续等待,直到超过设置的最长时间
webdriverwait= new webdriverwait(driver,100l);
强制等待
线程等待,线程休眠一段时间,thread.sleep(2000)