当前位置: 首页 > news >正文

Web自动化测试(二)(全网最给力自动化教程)

欢迎您来阅读和练手!您将会从本章的详细讲解中,获取很大的收获!开始学习吧!

  • 2.4 CSS定位
  • 2.5 SeleniumBuilder辅助定位元素
  • 2.6 操作元素(键盘和鼠标事件)

正文

2.4 CSS定位

前言
大部分人在使用selenium定位元素时,用的是xpath定位,因为xpath基本能解决定位的需求。css定位往往被忽略掉了,其实css定位也有它的价值,css定位更快,语法更简洁。
这一篇css的定位方法,主要是对比上一篇的xpath来的,基本上xpath能完成的,css也可以做到。两篇对比学习,更容易理解。
2.4.1 css:属性定位
1.css可以通过元素的id、class、标签这三个常规属性直接定位到
2.如下是百度输入框的的html代码:

<input id="kw" class="s_ipt" type="text" autocomplete="off" maxlength="100" name="wd"/>

3.css用#号表示id属性,如:#kw
4.css用.表示class属性,如:.s_ipt
5.css直接用标签名称,无任何标示符,如:input

2.4.2 css:其它属性

1.css除了可以通过标签、class、id这三个常规属性定位外,也可以通过其它属性定位
2.以下是定位其它属性的格式

2.4.3 css:标签

1.css页可以通过标签与属性的组合来定位元素

2.4.4 css:层级关系

1.在前面一篇xpath中讲到层级关系定位,这里css也可以达到同样的效果
2.如xpath:

//form[@id='form']/span/input和
//form[@class='fm']/span/input也可以用css实现

2.4.5 css:索引

1.以下图为例,跟上一篇一样:

2.css也可以通过索引option:nth-child(1)来定位子元素,这点与xpath写法用很大差异,其实很好理解,直接翻译过来就是第几个小孩。

2.4.6 css:逻辑运算

1.css同样也可以实现逻辑运算,同时匹配两个属性,这里跟xpath不一样,无需写and关键字

2.4.7 css:模糊匹配

1.css的模糊匹配contains('xxx'),网上虽然用各种资料显示能用,但是小编亲自试验了下,一直报错。
2.在各种百度后找到了答案:you can't do this withCSS selectors, because there is no such thing as:contains() in CSS. It was a proposal that was abandoned years ago.
非常遗憾,这个语法已经被抛弃了,所以这里就不用管这个语法了。
css语法远远不止上面提到的,还有更多更强大定位策略,有兴趣的可以继续深入研究。官方说法,css定位更快,语法更简洁,但是xpath更直观,更好理解一些。

2.5 SeleniumBuilder辅助定位元素

前言
对于用火狐浏览器的小伙伴们,你还在为定位元素而烦恼嘛?
上古神器Selenium Builder来啦,哪里不会点哪里,妈妈再也不用担心我的定位元素问题啦!(但是也不是万能,基本上都能覆盖到)

2.5.1 安装Selenium Builder

在火狐浏览器的附加组件中搜索添加Selenium Builder即可。安装好后如下图所示:

 2.5.2 直接运用

1.打开你要测试的URL或者打开插件后输入你要测试的URL,如下图

2.点击后弹出一个弹窗,如下图:

注:如果你是直接在你要测的网页页面打开这个插件时,selenium builder会直接获取你要测的URL

3.点击record:

然后你就可以哪里不会点哪里了。这里举个例子:

2.5.3 实践案例

1.百度首页,点击百度一下,然后点击登录,再一次点击账号和密码输入框,让我们来看看结果。

2.这里没有展开,点击展开后可以发现定位该元素的多种方法

直接选择你想要的方法复制粘贴即可,不用的话直接关掉弹窗即可。

2.6 操作元素(键盘和鼠标事件)

前言
在前面的几篇中重点介绍了一些元素的定位方法,定位到元素后,接下来就是需要操作元素了。本篇总结了web页面常用的一些操作元素方法,可以统称为行为事件
有些web界面的选项菜单需要鼠标悬停在某个元素上才能显示出来(如百度页面的设置按钮)。

2.6.1 简单操作

    1.点击(鼠标左键)页面按钮:click()
    2.清空输入框:clear()
    3.输入字符串:send_keys()
    4.send_keys()如果是发送中文的,前面需加u,如:u"中文",因为这里是输入到windows系统了,windows系统是GBK编码,我们的脚本是utf-8,需要转码为Unicode国际编码,这样才能识别到。

2.6.2 submit提交表单

1.在前面百度搜索案例中,输入关键字后,可以直接按回车键搜索,也可以点搜索按钮搜索。
2.submit()一般用于模拟回车键。

2.6.3 键盘操作 

    1.selenium提供了一整套的模拟键盘操作事件,前面submit()方法如果不行的话,可以试试模拟键盘事件
    2.模拟键盘的操作需要先导入键盘模块:from selenium.webdriver.common.keysimport Keys
    3.模拟enter键,可以用send_keys(Keys.ENTER)

    4.其它常见的键盘操作:
       键盘F1到F12:send_keys(Keys.F1)把F1改成对应的快捷键:

       复制Ctrl+C:send_keys(Keys.CONTROL,'c') 

       粘贴Ctrl+V:send_keys(Keys.CONTROL,'v') 

       全选Ctrl+A:send_keys(Keys.CONTROL,'a') 

       剪切Ctrl+X:send_keys(Keys.CONTROL,'x') 

       制表键Tab:  send_keys(Keys.TAB) 

       这里只是列了一些常用的,当然除了键盘事件,也有鼠标事件。

2.6.4 鼠标悬停事件

    1.鼠标不仅仅可以点击(click),鼠标还有其它的操作,如:鼠标悬停在某个元素上,鼠标右击,鼠标按住某个按钮拖到
    2.鼠标事件需要先导入模块:from selenium.webdriver.common.action_chainsimport ActionChains
        perform() 执行所有ActionChains中的行为;
        move_to_element() 鼠标悬停。
    3.这里以百度页面设置按钮为例:

    4.除了常用的鼠标悬停事件外,还有
       右击鼠标:context_click()
       双击鼠标:double_click()
       依葫芦画瓢,替换上面案例中对应的鼠标事件就可以了
       selenium提供了一整套完整的鼠标和键盘行为事件,功能还是蛮强大滴。下一篇介绍多窗口的情况下如何处理。

相关文章:

Web自动化测试(二)(全网最给力自动化教程)

欢迎您来阅读和练手&#xff01;您将会从本章的详细讲解中&#xff0c;获取很大的收获&#xff01;开始学习吧&#xff01; 2.4 CSS定位2.5 SeleniumBuilder辅助定位元素2.6 操作元素&#xff08;键盘和鼠标事件&#xff09; 正文 2.4 CSS定位 前言 大部分人在使用selenium定…...

【C语言经典例题!】逆序字符串

目录 一、题目要求 二、解题步骤 ①递归解法 思路 完整代码 ②循环解法 思路 完整代码 嗨大家好&#xff01; 本篇博客中的这道例题&#xff0c;是我自己在一次考试中写错的一道题 这篇博客包含了这道题的几种解法&#xff0c;以及一些我自己对这道题的看法&#xff…...

21 - 二叉树(三)

文章目录1. 二叉树的镜像2. 判断是不是完全二叉树3. 完全二叉树的节点个数4. 判断是不是平衡二叉树1. 二叉树的镜像 #include <ctime> class Solution {public:TreeNode* Mirror(TreeNode* pRoot) {// write code hereif (pRoot nullptr) return pRoot;//这里记得要记得…...

【A-Star算法】【学习笔记】【附GitHub一个示例代码】

文章目录一、算法简介二、应用场景三、示例代码Reference本文暂学习四方向搜索&#xff0c;一、算法简介 一个比较经典的路径规划的算法 相关路径搜索算法&#xff1a; 广度优先遍历&#xff08;BFC&#xff09;深度优先遍历&#xff08;DFC&#xff09;Di jkstra算法&#…...

纽扣电池澳大利亚认证的更新要求

澳大利亚强制性安全和信息标准草案具体规定了对含有纽扣电池和纽扣电池以 及纽扣电池和纽扣电池本身的消费品的要求&#xff0c; 适用范围 1.本法规适用于: 纽扣锂电池(任何尺寸和类型); 直径为16毫米或以上的纽扣锂电池: 一起提供的纽扣电池(未预先安装在产品中)。 2.但是&…...

零代码零距离,明道云开放日北京站圆满结束

文/麦壁瑜 编辑/李雨珂 2023年3月17日&#xff0c;为期一天的明道云开放日北京站圆满结束。本次开放日迎来超过100名伙伴和客户现场参会&#xff0c;其中不乏安利、通用技术集团、民生银行、迈外迪、DELSK集团、中国人民养老保险、北京汽车等知名企业代表。北京大兴机场、作业…...

第五章Vue路由

文章目录相关理解vue-router的理解对SPA应用的理解路由的理解基本路由几个注意点嵌套路由——多级路由路由query参数命名路由路由的params参数路由的props配置路由跳转的replace方法编程式路由导航缓存路由组件路由组件独有的生命钩子activated和deactivated路由守卫全局路由守…...

Git常用指令

Git是什么&#xff1a; Git是分布式版本控制系统&#xff08;Distributed Version Control System&#xff0c;简称 DVCS&#xff09;&#xff0c;分为两种类型的仓库&#xff1a; 本地仓库和远程仓库 第一步先新建仓库&#xff0c;本地 init ,然后提交分枝 链接仓库&#xf…...

Java每日一练(20230329)

目录 1. 环形链表 II &#x1f31f;&#x1f31f; 2. 基础语句 ※ 3. 最小覆盖子串 &#x1f31f;&#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 环形…...

【面试题】JS的一些优雅写法 reduce和map

大厂面试题分享 面试题库 前后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 web前端面试题库 VS java后端面试题库大全 JS的一些优雅写法 reduce 1、可以使用 reduce 方法来实现对象数组中根据某一key值求和 …...

【蓝桥杯真题】包子凑数(裴蜀定理、动态规划、背包问题)

题意 小明几乎每天早晨都会在一家包子铺吃早餐。他发现这家包子铺有N种蒸笼&#xff0c;其中第i种蒸笼恰好能放Ai个包子。每种蒸笼都有非常多笼&#xff0c;可以认为是无限笼。 每当有顾客想买X个包子&#xff0c;卖包子的大叔就会迅速选出若干笼包子来&#xff0c;使得这若干…...

一种免费将PDF转word的方式

pdf转word的需求对我来说很重要&#xff0c;我经常会有PDF转word的方式&#xff0c;但是网上搜索到的方式&#xff0c;要么收费、要么限制pdf大小或者限制转换次数。这里我分享一种免费转换的方式&#xff1a;用Acrobat Pro 来做转换。Adobe Acrobat Pro拥有强大的功能&#xf…...

MyBatis-面试题

文章目录1.什么是MyBatis?2.#{}和${}的区别是什么&#xff1f;3.MyBatis的一级、二级缓存4.MyBatis的优缺点5.当实体类中的属性名和表中的字段名不一样 &#xff0c;怎么办 &#xff1f;6.模糊查询like语句该怎么写?7.Mybatis是如何进行分页的&#xff1f;分页插件的原理是什…...

jQuery一些问题和ajax操作

jQuery语法&#xff1a; 文档就绪事件&#xff1a;文档加载之后运行jQuery代码&#xff0c;相当于jQuery的入口函数。 $(document).ready(function(){// 开始写 jQuery 代码...}); 简写&#xff1a; $(function(){// 开始写 jQuery 代码...}); jQuery选择器&#xff1a; …...

Pytorch构建自己的数据集

1.Pytorch内置的Dataset Pytorch中内置了许多数据集&#xff0c;我们可以从torchvision库中进行导入。比如&#xff0c;我们可以导入Fashion-MNIST数据集 import torch from torch.utils.data import Dataset from torchvision import datasets from torchvision.transforms …...

信息论小课堂:纠错码(海明码在信息传输编码时,通过巧妙的信道编码保证有了错误能够自动纠错。)

文章目录 引言I 纠错1.1 信息纠错的前提:信息冗余1.2 发现抄写错误的方法1.3 计算机的信息校验原理:奇偶校验1.4 有效的纠错编码II 案例2.1 例子1:自身DNA的编码2.2 例子2:海明码引言 预则立,不预则废:不确定性是我们这个世界自然的属性,在解决问题之前,要考虑到世界的不…...

MySQL执行计划(explain)

MySQL执行计划(explain) 1.什么是执行计划 2.如何分析执行计划 执行计划一共有12列,每一列都有着特殊的含义&#xff0c;接下来我们逐一分析 id select语句的查询顺序,包含一组数字&#xff0c;如果数字相同则从上到下&#xff0c;如果数字不同则从大到小。 select_type …...

思必驰回复第二轮审核问询,如何与科大讯飞、阿里巴巴“虎口夺食”?

‍数据智能产业创新服务媒体——聚焦数智 改变商业3月21日&#xff0c;思必驰科技股份有限公司&#xff08;以下简称“思必驰”&#xff09;更新上市申请审核动态&#xff0c;已回复上交所第二轮审核问询函&#xff0c;回复了涵盖关于实际控制人的认定、关于预计持续亏损及关于…...

基于Spring、SpringMVC、MyBatis的汽车租赁系统设计

文章目录 项目介绍主要功能截图:前台首页汽车信息列表汽车租赁留言反馈个人信息管理后台汽车类型管理汽车信息管理租赁信息管理用户管理续租信息管理归还信息管理保险信息管理违章登记管理部分代码展示设计总结项目获取方式🍅 作者主页:Java韩立 🍅 简介:Java领域优质创…...

读《刻意练习》后感,与原文好句摘抄

第一章&#xff0c;有目的的练习 所谓“天真的练习”&#xff0c;基本上只是反复的做某件事情&#xff0c;并指望只靠这种反复的练习&#xff0c;就能够提高表现和水平。 有目的练习的四个特点 有目的的练习具有定义明确的特定目标有目的的练习是专注的有目的的练习包含反馈…...

华为OD机试用java实现 -【选座位】

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:选座位 题目 疫情期间需要大…...

国产蓝牙耳机怎么挑选?口碑最好的国产蓝牙耳机

蓝牙耳机已经成为现代人生活中必不可少的设备之一&#xff0c;因此市场上涌现出了众多的品牌和型号。但是&#xff0c;在这个竞争激烈的市场中&#xff0c;哪些品牌的蓝牙耳机更受欢迎呢&#xff1f;以下是几款口碑不错的蓝牙耳机品牌。 一、南卡小音舱蓝牙耳机 推荐系数&…...

seaborn从入门到精通03-绘图功能实现02-分类绘图Categorical plots

seaborn从入门到精通03-绘图功能实现02-分类绘图Categorical plots总结参考关系-分布-分类分类绘图-Visualizing categorical data图形级接口catplot--figure-level interface导入库与查看tips和diamonds 数据分类散点图参考分布散点图stripplot分布密度散点图-swarmplot&#…...

❤️独特的算法❤️:一文解决编辑距离问题

编辑距离问题 题目关键点115. 不同的子序列 - 力扣&#xff08;LeetCode&#xff09;*dp数组定义&#xff0c;情况讨论583. 两个字符串的删除操作 - 力扣&#xff08;LeetCode&#xff09;两个字符串删除&#xff0c;情况讨论多加一种72. 编辑距离 - 力扣&#xff08;LeetCode…...

三次样条样条:Bézier样条和Hermite样条

总结 What is the Difference Between Natural Cubic Spline, Hermite Spline, Bzier Spline and B-spline? 1.多项式拟合中的 Runge Phenomenon 找到一条通过N1个点的多项式曲线 &#xff0c;需要N次曲线。通过两个点的多项式曲线为一次&#xff0c;三个点的多项式曲线为二…...

Redis面试题 (2023最新版)

文章目录一、Redis为什么快&#xff1f;1、纯内存访问2、单线程&#xff0c;避免上下文切换3、渐进式ReHash、缓存时间戳&#xff08;1&#xff09;渐进式ReHash&#xff1a;&#xff08;2&#xff09;缓存时间戳&#xff1a;二、Redis合适的应用场景常用基本数据类型&#xff…...

基于springboot实现家乡特色食品景点推荐系统【源码+论文】分享

基于springboot实现家乡特色推荐系统演示开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&…...

Spring MVC 启动之 HandlerMapping

在上一篇文章中&#xff0c;我们介绍了 Spring MVC 的启动流程&#xff0c;接下来我们将发分多个篇章详细介绍流程中的重点步骤 今天我们从 HandlerMapping 开始分析&#xff0c;HandlerMapping 是框架中的一个非常重要的组件。它的作用是将URL请求映射到合适的处理程序&#x…...

基于YOLOv5的停车位检测系统(清新UI+深度学习+训练数据集)

摘要&#xff1a;基于YOLOv5的停车位检测系统用于露天停车场车位检测&#xff0c;应用深度学习技术检测停车位是否占用&#xff0c;以辅助停车场对车位进行智能化管理。在介绍算法原理的同时&#xff0c;给出Python的实现代码、训练数据集以及PyQt的UI界面。博文提供了完整的Py…...

【Linux系统编程】5.vim基本操作命令

目录 跳转到指定行 命令模式 末行模式 跳转行首 跳转行尾 自动格式化代码 大括号、中括号、小括号对应 光标移至行首 光标移至行尾 删除单个字符 删除一个单词 删除光标至行尾 删除光标至行首 替换单个字符 删除指定区域 删除指定1行 删除指定多行 复制一行 …...

网站开发流程数据库/seo优化培训课程

福师《计算机应用基础》在线作业一 福师《计算机应用基础》在线作业一 一、单选题&#xff1a; 1.观看所有的幻灯片&#xff0c;应选择( )工作视图。是 (满分:2) A. 幻灯片视图 B. 大纲视图 C. 幻灯片浏览视图 D. 幻灯片放映视图 2.为了在磁盘中快速查找所有的“&#xff0e;do…...

学外贸英语的网站/seo概念的理解

在聚合操作中,需要指定键或分组方式,以及指定如何转换一列或多列数据的聚合函数。s除了处理任意类型的值之外&#xff0c;Spark还可以创建以下分组类型&#xff1a;最简单的分组通过在select语句中执行聚合来汇总整个DataFrame“group by”指定一个或者多个key也可以指定一个或…...

国内外网站建设2017/广告投放运营主要做什么

10月&#xff0c;工作后的第二个月。之前看到过一些大神的文章&#xff0c;里面有提到&#xff0c;最好每个月都写一篇文章&#xff0c;做一些记录。现阶段的我没有太多技术上和经验上的积累&#xff0c;那就暂且记录一下工作上的一些感悟吧&#xff0c;坚持下去&#xff0c;慢…...

安康公司做网站/营销推广活动策划

来源&#xff1a;blog.csdn.net/weixin_43951778现开发一个停车系统,用户根据车位停车1)车主查看现在有无车位(最多100个车位),给车主随机分配一个车位,如果该位置上有车,不能停2)按停车时间收费,3小时以内不收费,3小时以外,每小时2元,最大20元3)车主可以查看自己停车的车位和收…...

类豆瓣的模板wordpress/百度大数据官网

我们在项目中经常会用到一些正则表达式&#xff0c;将常用的正则做个归纳&#xff0c;方便后期查找 正则字符的简要说明 "^" &#xff1a; ^会匹配行或者字符串的起始位置&#xff0c;有时还会匹配整个文档的起始位置 "$" &#xff1a; $会匹配行或字符串的…...

去黄山旅游攻略和费用是多少/seo网站怎么搭建

仅作为记录&#xff0c;大佬请跳过。 直接上代码&#xff1a; # import os import globpath "/Data4T/unet/data/cdata_HER2_invade/auto_val/val/test_0"paths glob.glob(os.path.join(path, *.png))# 输出所有文件和文件夹 for file in paths:print(file)os.re…...