Web自动化测试

Selenium

Selenium简介

  • Selenium支持Web浏览器的自动化,主要由三个工具组成

    • WebDriver: 使用浏览器提供的api来控制浏览器
    • IDE:是Chrome和Firefox扩展插件,可以录制用户在浏览器中的操作
    • Grid:分布式,可以在多个浏览器中操作
  • 官方网站:

  • selenium架构图
    客户端通过不同的语言python/java操作selenium,selenium通过不同浏览器的driver可以驱动浏览器
    图片说明

Selenium安装

Selenium环境配置步骤

  1. 准备好python环境
  2. 准备好selenium环境
    • pip install selenium
  3. 下载浏览器对应的driver版本
  4. driver配置环境变量
  5. 在python中import对应的依赖

Driver的配置

Selenium IDE用例录制

录制和回放一些用户的操作

(不是很有用,就是个基础工具)

下载安装

启动IDE

录制第一个用例

扩展:代码导出

Selenium编写用例

入门文档:

https://selenium-python.readthedocs.io/

用例的关键要素

  • 导入依赖
  • 创建driver
  • 执行自动化步骤
  • 断言

编写用例

可以用IDE查询定位,比如linktext,css,id等等

Selenium三种等待方式

  • 直接等待

    强制等待:线程休眠一定时间
    time.sleep(3)

  • 隐式等待

    设置一个等待时间,轮询查找(默认0.5秒)元素是否出现,如果没出现就抛出异常
    self.driver.implicitly_wait(3)
    缺点:这是一个全局的变量,作用于全部的find_element,不能特殊情况特殊对待

  • 显式等待

    最大的优点:具体指了是哪一个操作
    在代码中定义等待时间,当天条件发生时才继续执行代码
    'WebDriverWait'配合until()和until_not()方法,根据判断条件进行等待
    程序每隔一段时间(默认为0.5秒)进行条件判断,如果条件成立,则执行下一步,否则继续等待,直到超过设置的最长时间

web控件定位与常见操作

selenium点击与输入

  • 输入:find_element(By.ID,'kw').send_keys("霍格沃兹学院")
  • 点击:find_element(By.ID,'su').click()

定位

Xpath定位

使用id/name以及层次间的关系可以定位90%的元素
$x('')

XML Path Language

优点:可以用于appium,selenium
缺点:比较慢,因为是从头到尾遍历

表达式 结果
/bookstore/book[1] 选取属于bookstore子元素的第一个book元素
/bookstore/book[last()] 选取属于bookstore子元素的最后一个book元素
/bookstore/book[last()-1] 选取属于bookstore子元素的倒数第二个book元素
//title[@lang='eng'] 选取所有title元素,且这些元素拥有值为eng的lang属性
表达式 结果
nodename 选取此节点的所有子节点
/ 从根节点选取
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置
. 选取当前节点
.. 选取当前节点的父节点
@ 选取属性

一般一个页面中如果出现了name/id,那就直接拿name/id就行了,唯一的
如果没有name/id那就找它的父元素,然后通过标签定位它,但是标签可能有很多,可以通过是第几个进行定位

/和//的区别:

  • /只可以定位子元素
  • //可以定位子孙元素

在页面的检查——console里面可以进行查找练习
图片说明

图片说明

图片说明

css selector的位置

可以用于appium和selenium,但是appium原生的空间不支持css selector
只适合于css样式定位

$(' ')

常用的css selector

空格代表子子孙孙,>是子元素

图片说明

图片说明

web控件常用操作

右键点击
页面滑动
表单操作

selenium提供了两个接口:

  • ActionChains:执行PC端的鼠标点击,双击,右键,拖拽等事件
  • TouchActions:模拟PC和移动端的点击,滑动,拖拽,多点触控等手势操作

动作链接ActionChains

  • 执行原理:
    调用ActionChains的方法时,不会立即执行,而是将所有的操作,按顺序存放在一个队列里,当调用perform()方法时,队列中的事件会依次执行

全部评论

相关推荐

网安已死趁早转行:山东这地方有点说法
点赞 评论 收藏
分享
03-31 18:02
门头沟学院 Java
白日梦想家_等打包版:不要的哦佛给我
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务