天天看点

Selenium自动化实现web自动化-1

框架搭建

基于maven+jdk8+junit5+seleium 构建 

驱动下载

下载地址 :http://chromedriver.storage.googleapis.com/index.html

Selenium自动化实现web自动化-1

基于当前 浏览器的版本

测试demo

截图方法:takesscreenshot接口是依赖于具体的浏览器api操作的

执行

Selenium自动化实现web自动化-1

用列录制

使用seleniumide 录制

Selenium自动化实现web自动化-1

新建一个录制project

Selenium自动化实现web自动化-1
Selenium自动化实现web自动化-1

输入网站开始录制,并在录制的网页上执行搜索

Selenium自动化实现web自动化-1
Selenium自动化实现web自动化-1

录制结果

当test越来越多时,可以将多个test归类到suites中,suites就像小柜子

创建项目时,ide会创建一个默认suite,并将第一个test添加到其中,你可以点击test,在下拉菜单中选中test suites进入suites管理界面

首先进入suites管理界面,点击`+`,提供名称,然后单击add:

将鼠标悬停在`suite1`上,点击三个点弹出suites管理菜单:

可以对`suite1`进行管理,包括添加test,重命名,删除,设置,导出

Selenium自动化实现web自动化-1

导出的用例

用例的编写

Selenium自动化实现web自动化-1

定位方法

执行分析:

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)