Selenium一本通

Selenium中文官方文档

从一个测试脚本说起

from selenium import webdriver #引入selenium webdriver模块
driver = webdriver.Firefox() #初始化Firefox浏览器的webdriver对象,启动浏览器
driver.get("http://cn.bing.com/") #跳转到对应页面
assert 'Bing' in driver.title #检查页面标题是否包含某一信息
driver.quit() #关闭浏览器

Selenium家族

  • Selenium IDE:浏览器组件,提供录制回放功能,可以将录制生成多种编程语言脚本,快速创建测试用例;
  • Selenium Grid:支持分布式测试,在不同平台、浏览器的多态远程机器上同时运行Selenium测试脚本,提交效率;
  • Selenium RC(Remote Control):Java语言编写服务端,处理测试脚本发来的HTTP请求,操作浏览器(Selenium2后与WebDriver合并,使用驻留Chrome、IE、FireFox浏览器);
  • Selenium WebDriver:调用WebDriver对象操作浏览器。

Selense命令集合

  • Action: open\type\click\sendKeys
  • Accessor:将值保存至变量
  • Assertions:检查点。
    1)Assert断言,检查指定条件是否满足,不满足,终止test case运行;
    2)verify验证指定条件是否等于期望值,若不满足,则仅当前步骤失败,继续执行下一步。
  • Wait:等待元素加载完成后操作。
    1)***AndWait执行操作后等待页面刷新完成才进行下一步,如clickAndWait点击并等待;
    2)waitFor*** 等待直到复合某一特定条件才进行下一步,如waitForElementPresent 等待知道指定元素出现在页面上。隐式等待,如果条件满足,就立即执行下一步,否则等到selenium IDE设置的最大等待时间,因此具体等待时间不确定。
  1. pause 显示等待,明确了等待时间,一定等到时间结束为止。
    selenium IDE默认最大等待时间30000ms(30s),超时未找到元素则测试步骤失败,脚本抛出异常。

常见的元素定位方法

F12工具栏第一各图标-在页面中选择一个元素以进行检查,可以以通过悬停在元素上方定位html语言。
选中html语言,点击右键,可以复制selector/xpath等

  1. 通过元素id定位
WebElement ele = driver.find_element('id', value)
WebElement ele = driver.find_element(By.ID, value)
  1. 元素Name:‘name’ By.NAME
  2. xpath表达式:‘xpath’ By.XPATH
  3. 完整超链接:‘link text’ By.LINK_TEXT
  4. 部分链接:‘partial text’ By.PARTIAL_LINK
  5. 标签:‘tag name’ By.TAG_NAME
  6. 类名:‘class name’ By.CLASS_NAME
  7. css选择器:‘css selector’ By.CSS_SELECTOR

如何选择定位方法?

首选id,具有唯一性,缺少id属性或id动态刷新时选择其它;
TagName/ClassName:先找到一类元素,再通过具体的顺序位置定位到某一个元素;
LinkTest/PartialLinkTest:定位链接时;
XPath/cssSelector:定位很强大,但定位性能不是很好,可读性也会变差,少数元素不好定位时选择。

实例

一、环境搭建

1. 安装selenium库
pip install selenium
2. 安装浏览器驱动

网页链接:Microsoft Edge Driver - Microsoft Edge Developer

简单起见将下载的msedgedriver.exe与py文件放在同一目录下,可以不用配置环境变量。

二、初始化

1. 启动浏览器驱动
from selenium import webdriver
wd = webdriver.Edge() #"msedgedriver"
2. 设置等待时间
wd.implicitly_wait(5)
3. 打开网站
wd.get("https://www.bv2008.cn/app/user/register.php?type=org")
4. 程序的最后关闭浏览器驱动
wd.quit()

三、选择元素

1. 导入库
from selenium.webdriver.common.by import By
2. 根据ID查找
element = wd.find_element(By.ID, 'ID值')
3. 根据css选择器查找
element = wd.find_element(By.CSS_SELECTOR, 'css选择器')
4. 其他查找方法
element = wd.find_element(By.CLASS_NAME, 'class属性')
element = wd.find_element(By.TAG_NAME, '标签名')
5. find_element与find_elements
find_element返回一个元素(第一个)
find_elements返回元素列表

四、操作元素

1. 输入文字:send_keys()
element.send_keys('文本')			# 用于文本框
2. 点击:click()
element.click()			# 用于按钮、超链接、单选框、多选框、
3. 下拉框选择
s = Select(element)
s.select_by_value('value值')
# s.select_by_visible_text('文本信息')

五、切换窗口

1. iframe
# 进入到iframe
wd.switch_to.frame('iframe名')
# wd.switch_to.frame(element)

# 回到原页面
wd.switch_to.default_content()
2. 切换页面
for window_handle in wd.window_handles:
    wd.switch_to.window(window_handle)
    if '内容' in wd.title:
        break

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/578042.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何解决升级IntelliJ IDEA 2024后 打开项目就自动闪退关闭问题的终极指南

title: “🐯 解决升级IntelliJ IDEA 2024后项目自动关闭的终极指南” date: 2024-04-23 author: 猫头虎 profile: CSDN 文章目录 title: "🐯 解决升级IntelliJ IDEA 2024后项目自动关闭的终极指南" date: 2024-04-23 author: 猫头虎 profile: …

鸿蒙OpenHarmony【轻量系统 烧录】 (基于Hi3861开发板)

烧录 针对Hi3861开发板,除了DevEco Device Tool(操作方法请参考烧录)外,还可以使用Hiburn进行烧录。 前提条件 开发板相关源码已编译完成,已形成烧录文件。客户端(操作平台,例如Windows系统&…

【Python从入门到进阶】53、Scrapy日志信息及日志级别

接上篇《52、CrawlSpider链接提取器的使用》 上一篇我们学习了基于规则进行跟踪和自动爬取网页数据的“特殊爬虫”CrawlSpider。本篇我们来学习Scrapy的日志信息及日志级别。 一、引言 1、日志在Scrapy中的重要性 在Scrapy框架中,日志扮演着至关重要的角色。日志…

并并并并·病查坤

P1、什么是并查集 引用自百度百科: 并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合…

虹科Pico汽车示波器 | 免拆诊断案例 | 2006 款林肯领航员车发动机怠速抖动

故障现象 一辆2006款林肯领航员车,搭载5.4 L发动机,累计行驶里程约为26万km。该车因发动机怠速抖动故障进厂维修,维修人员更换了火花塞、点火线圈及凸轮轴位置传感器,清洗了积炭和喷油器,故障依旧,于是向笔…

纵览2024年:排名靠前的项目管理软件一览!

时间飞逝,2024年已经过去近半,让我们来盘点2024年排名靠前的项目管理软件,项目管理软件排行榜,本次上榜的项目管理软件有Zoho Projects、Microsoft Project、Nifty、Smartsheet、ClickUp。 一、项目管理软件排行榜 1.Zoho Projec…

8点法估计基础矩阵

估计基础矩阵 文章目录 估计基础矩阵8点法归一化 8点法 8点法 根据两幅图像中8个对应点对之间的关系,采用SVD求 解最小二乘方 约束:det(F) 0 假设已知N对点的对应关系: { x i , x i ′ } i 1 N \{x_i,x^{\prime}_i\}_{i1}^N {xi​,xi′​…

RKNN:yolov8模型转换与板端推理流程

近期,在研究瑞芯微的RKNN模型推理时,遇到一些坑,现记录下来,以备忘,亦供同道者参考。 目录 1. 模型转换 1.1. 宿主机环境配置 1.2. onnx模型准备 1.3. onnx转rknn 2. 模型推理 2.1. 推理环境配置 2.2. 推理验证…

码农解压宝典

在快速发展的IT行业中,程序员们面临着巨大的工作压力。长时间的工作、高强度的编程任务以及不断更新的技术知识,使得程序员们时常感到疲惫不堪。然而,通过掌握一些简单的小窍门,程序员们可以有效地缓解工作压力,保持身…

【C++】类和对象⑤(static成员 | 友元 | 内部类 | 匿名对象)

🔥个人主页:Forcible Bug Maker 🔥专栏:C 目录 前言 static静态成员 友元 友元函数 友元类 内部类 匿名对象 结语 前言 本篇主要内容:类和对象的一些知识点补充,包括static静态成员,友…

AWTK 开源串口屏开发(17) - 通过 MODBUS 访问数组数据

在 AWTK 串口屏中,内置了 MODBUS Client Channel 的模型,不用编写代码即可实现在 ListView 中显示数组数据。 MODBUS 协议一次只能读取 125 个 WORD,AWTK-MODBUS Client Channel 支持长数据,自动分成多个请求访问。 1. 功能 不用…

C语言入门课程学习记录5

C语言入门课程学习记录5 第23课 - C 语言中的常量第24课 - 初探程序中的数组第25课 - 数组特性深入剖析第26课 - 多维数组的概念与示例 本文学习自狄泰软件学院 唐佐林老师的 C语言入门课程,图片全部来源于课程PPT,仅用于个人学习记录 第23课 - C 语言中…

SecretFlow学习指南(2)学习路径

目录 一、模块架构 二、模块详解 三、算法协议 四、学习路线 一、模块架构 良好的分层设计可以提高开发效率和可维护性,满足不同用户的需求。隐语从上到下一共分为六层。 ●产品层:通过白屏化产品提供隐语整体隐私计算能力的输出,让用户简…

paddle ocr模型量化实践

参考:https://github.com/PaddlePaddle/PaddleOCR/blob/main/deploy/slim/quantization/README.md https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7.1/doc/doc_ch/FAQ.md 蒸馏 剪枝 量化 参考:https://blog.csdn.net/mddCSDN/article/de…

【MySQL】MySQL中MVCC多版本并发控制的概念

MySQL中MVCC多版本并发控制的概念 锁相关的知识我们已经学习完了,在其中我们提到过一个概念,那就是 MVCC 。这又是个什么东西呢?今天我们就来好好看看 MVCC 到底是干嘛的。 MVCC 多版本并发控制,它主要是控制 读 操作,…

x264 编码器源码分析综述

================================================================================ 系列文章 x264配置文章链接🔗Windows11编译x264源码https://blog.csdn.net/yanceyxin/article/details/135035650Mac调试x264源码https://blog.csdn.net/yanceyxin/article/details

《软件设计师教程:计算机网络浅了解计算机之间相互运运作的模式》

​ 个人主页:李仙桎 🔥 个人专栏: 《软件设计师》 ⛺️生活的理想,就是为了理想的生活! ​ ⛺️前言:各位铁汁们好啊!!!,今天开始继续学习中级软件设计师考试相关的内容&#xff0…

python中怎么注释多行

多行代码注释 方法一:先选中要注释的段落,然后按下“ctrl/”,即可实现多行代码的注释。效果如下: 再一次按下“ctrl/”就可以取消注释。 方法二:跟注释单行一样在每一行前面输入“shift#”。 #r(i-arr[idx])*rat[idx]…

三阶魔方公式大全 图解

https://www.mitao521.com/miji/2020112215034.html 三阶魔方七步还原法的公式有R’UF’U’、R’D’RD X,3OR5,R U R’,(RU R’U’),(RU R’U’)3,U’ L’ U L U F U’ F’,U R U’ R’ U’ F’ U F,F(R U R’ U’)F’。 还有(R U R’ U’)2和(R U R’ U’)5,R2 D2 R’ U’ R …

各种螺纹介绍

按用途,有三个主要大类: 第一,连接螺纹,用于紧固,即是螺栓螺母; 第二,传动螺纹,就是车床走刀那种; 第三,管螺纹,管道连接用。 按标准&#xf…