Python+Selenium+Unittest 之selenium2--元素定位1-简介

news2024/12/26 11:16:32

        这篇先说下webdriver的几种元素定位方式,让大家有个大概的了解,UI自动化说白了就是使用代码代替人工去进行操作,在页面上,执行人员可以直接对看到的任何地方进行点击、拖动等操作,而代码的话需要识别到到底要点那个按钮、从那个位置拖动到那个位置等。所以为了能让代码能成功移动到各个元素上,元素定位是很关键的一点,如果你能定位到页面上的所有元素,那么对于写自动化已经成功了很大一部分了。

        在WebDriver中有18中元素定位的方法,我们常用的只是其中8种。首先来看下都有哪18种元素定位方法。

        

        从上图中可以看到主要分为两大类find_element和find_elements两部分,然后每部分中各有9种元素定位的方式,由于find_element和find_elements的9种元素定位方法大致一样,所以下面就只先列出了find_element的所有方法。(find_element和find_elements区别具体使用后面会详说)

find_element_by_id()       #id定位
find_element_by_name()     #name定位
find_element_by_class_name()   #class定位
find_element_by_tag_name()     #tag定位
find_element_by_link_text()    #link定位
find_element_by_partial_link_text()   #partial_link定位
find_element_by_xpath()    #xpath定位
find_element_by_css_selector()    #css定位
find_element()   #元素定位参数化  不常用,常用的8种一般指的是上面那8种

        知道了有这几种元素定位方法后,到底要中怎么才能使用呢,这里先简单说下,具体每个使用方法后面会具体说到。

        我这里使用的是谷歌浏览器,首先我们可以先打开百度首页。

        之后按F12或者在页面右键后会有个检查的选项。选择后可打开控制台,之后按下图的步骤就能看到id、name、class这些东西,每个元素的定位是不同的,但是在代码中使用的话,必须要保证其唯一性,比如我们要用id="kw" 来定位搜索框,就要保证这个 id="kw" 在该页面只有这一个元素才行,这样才能准确的找到我们要定位到的元素,之后写的多了之后,就可以就大概知道每个元素都能怎么定位了。

        定位到元素之后,我们可能会对其进行内容输入、点击、情况搜索栏、刷新浏览器页面、后退浏览记录等,这时候就要使用键盘操作和鼠标操作的一些内容了,下面举个简单的例子,可以先了解下。(如果有条件可以直接复制粘贴运行下,鼠标操作、键盘操作、浏览器操作相关的后面也会单独说明,这块就是先对自动化有个大概的概念)

from selenium import webdriver #导入selenium模块的webdriver
import time    #导入time模块
driver = webdriver.Chrome()     #webdriver.Chrome()是启动谷歌浏览器然后定义成变量driver    
driver.get("https://www.baidu.com")   #打开百度浏览器
driver.find_element_by_id("kw").send_keys("放假安排")    #定位到输入框,然后输入框输入 放假安排
time.sleep(5)     #等待5s
driver.find_element_by_id("su").click()     #定位到百度一下的搜索按钮,然后点击该按钮
time.sleep(5)    #等待5s
driver.back()    #对浏览器进行后退操作
time.sleep(5)    #等待5s
driver.quit()    #关闭浏览器

        代码解释:执行上面代码后,首先会打开谷歌浏览器,之后会打开百度的官网,然后会定位到输入框的元素(id="kw"),定位到后,会对其输入 放假安排4个字,然后等待5S(在这里加入等待只是为了能在执行的时候更直观的看到每步有没有操作,如果没有等待这个过程,会操作的很快,完全看不到都执行了哪些内容,time模块也是一个很重要的内容,在很多地方都必须要用到的,具体time模块相关的东西后面会单独写一篇来说明),之后定位到百度一下的按钮(id="su"),然后点击该按钮,之后等待5秒后,对浏览器进行后退的操作,之后等待5S关闭浏览器。

TIPS:如何确定元素是不是唯一可以在控制台直接ctrl+F去进行搜索看看是不是元素是唯一的,下面搜索结果中有两个kw,但是其中一个是wdfield="kw",另一个是id="kw"我们用的是id定位,所以只要保证id="kw"是一个即可。

         这篇就先说这些,知道写一个ui的页面需要的流程和步骤即可,思路就是,想办法定位到要操作的元素,然后如果对该元素有相关操作的话,再去进行鼠标操作或者键盘操作即可。然后再这样一步步的去完善我们要执行的自动化的流程。


        如果大家在使用过程中遇到了问题,可以在文章下留言,或者关注公众号:刘阿童木的进化记录,进行留言

                   下图为公众号二维码,内容会同步发出,大家可以关注一起学习!

                                              

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

生产制造业ERP管理系统对于制造企业的好处有哪些?

任何一家企业在管理当中都存在或多或少的问题,这些问题对企业的发展都形成了一定的阻碍。在生产制造业当中,由于每日的繁重的生产计划和大量的生产作业,使得企业管理存在一些问题,这些问题不利于生产的有序进行,从而阻…

图表控件LightningChart.NET 系列教程(八):用代码创建图表

LightningChart.NET SDK 是一款高性能数据可视化插件工具,由数据可视化软件组件和工具类组成,可支持基于 Windows 的用户界面框架(Windows Presentation Foundation)、Windows 通用应用平台(Universal Windows Platfor…

【微服务】分布式事务Seata

分布式事务Seata1.分布式事务问题1.1.本地事务1.2.分布式事务2.理论基础2.1.CAP定理2.1.1.一致性2.1.2.可用性2.1.3.分区容错2.1.4.矛盾2.2.BASE理论2.3.解决分布式事务的思路3.初识Seata3.1.Seata的架构3.2.部署TC服务3.3.微服务集成Seata3.3.1.引入依赖3.3.2.配置TC地址3.3.3…

商用清洁机器人:科沃斯“破圈”、高仙机器人“纵深”

配图来自Canva可画 正所谓科技改变生活,机器人在人们日常生活中出现的频率正在逐步提高。同时,随着智能技术的不断迭代升级、用户需求的增多,机器人的应用场景逐步拓宽、功能形态也愈发多样化,比如配送机器人、医疗机器人、教育机…

Android 12.0 启动app时设置密码锁

1.前言 1.1概述 在12.0的系统产品开发中,对于限制某些app的启动的功能中,在项目中的需求是在点击app启动的时候,根据包名设置密码锁,当输入正确的密码的时候来启动这个app,否则 就不能启动这个app,达到限制使用app的目的,这就需要在app启动的时候,检测app的包名,然后在…

分布式架构的必问理论

基础理论: CAP理论: CAP理论是分布式系统设计中最基础、也是最为关键的理论,它指出,分布式数据存储不可能同时满足以下三个条件。 一致性(Consistency):每次读取要么获得最近写入的数据&…

OAuth2 (二)

目录 创建项目结构 父工程 客户 认证服务器 资源拥有者 资源服务器 创建项目结构 演示代码下载: https://gitee.com/lisenaq/oauth2-example.git 演示客户发请求: http://localhost:8080/client/getCode 父工程 父工程有:子模块需要重新导入该…

CVE-2022-34916 Apache Flume 远程代码执行漏洞分析

项目介绍 Apache Flume 是一个分布式的,可靠的,并且可用于高效地收集,汇总和移动大量日志数据的软件。它具有基于流数据流的简单而灵活的体系结构。它具有可调的可靠性机制以及许多故障转移和恢复机制,并且具有健壮性和容错性。它…

Spring/SpringBoot/SpringCloud面试题

SpringBoot和SpringMVC的区别 形式上:SpringBoot是一个自动化配置的工具;SpringMVC是一个web框架在搭建项目时:SpringMVC需要手动配置xml文件,同时需要配置Tomcat服务器。而SpringBoot采用约定大于配置的方式,进行自动…

【Linux系统】第五篇:Linux中编译器gcc/g++的使用

文章目录一、编译工具gcc/g二、程序编译的过程🎄预处理🎄编译🎄汇编🎄链接三、动态链接和静态链接🌻动态链接🌻静态链接🌻 程序动、静态链接的区分一、编译工具gcc/g gcc/g 分别是 C/C 的编译器…

【wp】hgame2023 week3 RePwn

【wp】hgame2023 week3 Re&&Pwn Re cpp那个chacha20加密不会。 kunmusic 用dnspy逆dll,在Program的Main方法中找到了初始化的数据 下断点执行,拷贝出data 写一份脚本进行data与104的异或 def step_one():with open("./data", enc…

发明专利申请流程资料

​发明专利申请流程 依据专利法,发明专利申请的审批程序分为: 1、受理阶段 2、初步审查阶段 3、公布阶段 4、实质审查阶段 5、授权阶段 发明专利申请所需资料 1、发明专利请求书。 2、说明书。 3、权利要求书。 4、说明书摘要。 5、有附图的可同时提交说…

Actionchains在selenium中的使用方法

今天分享一下selenium最常用的ActionChains的使用,以及碰到的一些问题的解决。 1.selenium解决鼠标悬停的问题 今天抓取某个平台的数据时发现有的数据需要鼠标悬停在上面才能加载出来,于是就想到了使用ActionChains解决悬停的问题,下面是思…

计算机组成原理 | 第九章:控制单元的功能 | 微操作命令 | 时钟周期

文章目录📚微操作命令的分析🐇取指周期🐇间址周期🐇执行周期🥕非访存指令🥕访存指令⭐️🥕转移指令🐇中断周期📚控制单元的功能🐇控制单元的外特性&#x1f9…

分享微信报名小程序怎么做_瑜伽健身房培训报名小程序开发介绍

活动报名收费签到小程序,支持个人免费组织报名收款和现场签到。随时随地管理活动、发布活动、查看收入明细提现资金更效率。 活动报名收费签到小程序主要功能有: 在线报名:通过二维码或链接分享活动入口,亦可轻松放进入公众号。 …

客户端通过SSH连接Linux服务器超时问题解决方法汇总

🐚作者简介:花神庙码农(专注于Linux、WLAN、TCP/IP、Python等技术方向)🐳博客主页:花神庙码农 ,地址:https://blog.csdn.net/qxhgd🌐系列专栏:善假于物&#…

Windows无法进入睡眠模式怎么办?

睡眠模式是电脑的一种低功耗模式,能减少耗电。当你要离开电脑一阵,但又不想关闭文档和程序,就可以选择让电脑暂时休眠。 如果你的电脑无法进入睡眠模式,可以尝试下面几种方法: 更换电源选项检查电源命令使用电源疑难…

开源机器学习软件对AI的发展意味着什么?

作者| Max Langenkamp OneFlow编译 翻译|徐佳渝、杨婷 为什么要关注机器学习开源软件(MLOSS)?在我们看来,MLOSS对AI发展来说举足轻重,但未获重视。 机器学习开源软件是开源许可下发布的专为机器…

“易”起涨知识|人人都在追捧的低代码开发,到底有什么优势?

低代码的根本价值在于:劳动力转移。运营、产品能 cover 部分开发工作,实现研发流左移,敏捷迭代。 劳动力转移只是表面,低代码价值还是归属于自动化了信息传递。 产品用文字和交互图(PRD)表达了一遍完整的产…

List、Set、Map的区别

List、Set、Map的区别 ​ (图一) 1.面试题:你说说collection里面有什么子类。 (其实面试的时候听到这个问题的时候,你要知道,面试官是想考察List,Set) 正如图一,lis…