Selenium工具学习
Selenium 自动化测试
什么样的项目适合自动化测试
- 项目周期长
- 需求变动不频繁
- 需要回归测试
其他自动化测试工具介绍
- QTP —-商业自动化测试工具
- Selenium——–开源自动化测试工具,主要做功能测试
- Robot Framework ——基于python的可扩展的关键字驱动的测试自动化测试框架
Selenium 的特点
- 是一个web自动化测试工具(简单来说就是只支持web的自动化测试)
- 跨平台(linux、windows、mac)
- 支持多种语言
- 成熟稳定
- 功能强大
我们现阶段学习的是web
基于python环境搭建selenium
1 | from time import sleep |
Demo Begin
元素定位
元素定位时依赖于什么
- 标签
- 路径
- 层级
- 路径
元素定位方式总共有八种
id
name
class_name —-使用元素的class属性
tag_name—- 使用标签名称
link_text —– 定位超链接
partial_link_text —- 定位超链接
Xpath ——基于元素路径
CSS ——-基于元素选择器
各种定位
通过id定位,一般是唯一标识符
通过name定位, 可以重名,但是前提是元素必须有name属性。
通过class_name定位 : 通过元素的class属性来定位, 一般来说class属性一般为多个值。
实现
1 | from selenium.webdriver.chrome.service import Service |
方法被弃用问题
其他定位
- name
1 | 输入框有个name属性:name="wd",这里可以通过它的name属性定位到这个元素,并且通过send_keys()传输字符给输入框。 |
- 标签名(tag_name)
1 | 输入框有个tag(标签)属性:input,这里可以通过它的标签属性定位到这个元素,并且通过send_keys()传输字符给输入框。但是标签往往不是惟一的,所有在实际应用中不常用。 |
1 | # 页面种如果存在多个相同的标签名 ,默认返回第一个 |
- link_text (定位超链接)
1 | 定位超链接 |
1 | driver.find_element(By.LINK_TEXT, "新闻").click() |
- partial_link_text定位元素
1 | 如果链接的字符串太长的话,全部输入影响代码美观也容易出错,这时就可以采用 partial_link_text,模糊匹配、截取字符串的一部分定位到元素。如图2中,我们定位新闻可以如下写。 |
XPath定位
- 为什么要有XPath
1 | 如果没有id、name、calss ,该如何定位 ? |
- 什么是
Xpath
?
xpath
依赖于元素的路径
他是基于XML(标记语言)、Path的简称, 他是一种在xml文档中查找元素信息的语言。
HTML可以看作是XML的一种实现方式,所以Selenium可以在web中定位元素
- 扩展
一般情况下, 尽量使用相对路径而不是用绝对路径。
最好不使用指定标签名称,不使用* 代替,效率非常慢
/ 后面必须为元素的名称 或者 *
XPath定位策略
四种:
- 路径-定位
1 | 匹配输入账号(相对路径) |
利用元素属性-定位
属性与逻辑结合-定位
层级与属性结合定位
基本语法
1 | // 后面跟的是相对路径 |
路径表达式
xpath通配符
Xpath 表达式的通配符可以用来选取未知的节点元素,基本语法如下:
Xpath内建函数
Xpath 提供 100 多个内建函数,这些函数给我们提供了很多便利,比如实现文本匹配、模糊匹配、以及位置匹配等,下面介绍几个常用的内建函数。
CSS定位
css 作为一种标记语言, 焦点、数据的样式。控制元素的显示样式。‘
css定位就是通过css选择器工具进行定位
1 | driver.find_element(By.CSS_SELECTOR, "css选择内容") |
常用策略
- id选择器
1 | 说明: 根据元素的id进行选择 |
- class选择器
1 | 说明: 根据元素的id进行选择 |
- 元素选择器
1 | 说明: 根据元素的标签名进行选择 |
- 属性选择器
1 | 说明: 根据元素的属性进行选择 |
- 层级选择器
1 | 语法: |
Xpath 和 css定位的比较
浏览器操作的常用方法
1 | browser.get(url):打开指定的URL |
测试
1 | driver = webdriver.Chrome(service=service) |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Rayce. Blogs!
评论