web自动化测试系列-selenium css_selector定位方法详解(七)

embedded/2024/10/19 21:36:12/

接上文 :web自动化测试系列-selenium xpath定位方法详解(六)-CSDN博客

1.什么是CSS定位

CSS(Cascading Style sheets)是一种语言 ,它主要用来描述HTML元素的样式显示 。

在CSS中,选择器是一种模式 ,用于选择需要添加样式的元素

2. CSS定位方式

css的定位和xpath定位基本相同 ,只不过css针对id和class有单独的写法 ,其它都一样 ,具体如下 :

  • id定位

  • class定位

  • 属性定位

  • 组合定位

selenium同样为css实现一个对应的方法 ,即 :

find_element_by_css_selector(css_selector)

其中css_selector编写的正式以上几种的定位方法 。

3.定位方法介绍

通过表格来列举下它们每种定位方式的不同 ,具体如下 :

定位方式css格式示例说明
id属性定位#id属性值#username#代表id属性,username代表id对应的值。
class属性定位.class属性值.username.代表class属性,username代表class对应的值
标签定位标签input使用input标签定位,不过一般单独使用定位到元素,故不会单独使用 。它只能和其它方式结合使用
属性定位[属性名=值][type='password'][]是固定格式,代表要使用属性定位,type是属性名,password是属性值
标签+id定位标签#id属性值input#username标签为input ,id的属性值为username ,两者结合。
标签+class定位标签.class属性值input.username标签为input ,class的属性值为username ,两者结合。
标签和属性集合定位标签[属性名=值]input[type='password']标签为input , []括号内的为属性和值 。这种用法最多。
多属性定位[属性1=值1][属性2=值2][type='password'][id='password']同时使用两个属性一起定位 ,这种情况用于一个属性定位不到,可以选择两个一起定位 。

4.项目案例

需求:通过selenium完成对tpshop的登录操作,具体如下 :

  1. 使用css属性定位首页登录按钮 ,

  2. 使用css id定位用户名输入框,并输入账号,如13988888888

  3. 使用css 标签+属性定位确认密码输入框,并输入123456 。

  4. 使用css多属性定位验证码输入框,并输入8888

  5. 使用css class定位登录按钮,并点击确定 。

项目代码:  

python"># 使用css定位from selenium import webdriver
import time# 1. 创建浏览器对象
driver = webdriver.Chrome()
driver.maximize_window()# 2. 输入地址 :http://localhost
driver.get("http://localhost")# 3. 定位元素
# 1) 定位登录 : css属性定位
driver.find_element_by_css_selector("[href='/Home/user/login.html']").click()
time.sleep(3)# 2) 输入用户名 :css id定位
driver.find_element_by_css_selector("#username").send_keys("13988888888")# 3) 输入密码 :css 标签 + 属性定位
driver.find_element_by_css_selector("input[type='password']").send_keys("123456")# 4) 输入验证码 : css 多属性定位
driver.find_element_by_css_selector("[placeholder='验证码'][name='verify_code']").send_keys("8888")time.sleep(1)# 5) 点击登录 :  css class属性定位
driver.find_element_by_css_selector(".J-login-submit").click()time.sleep(5)
driver.quit()

5.定位方法总结

至此,我们将selenium中的前8种方法已经介绍完了 ,它们各有优缺点 ,也都有各自的使用场景 。现将这8种方法放在一起做个综合比较,具体如下 :

元素定位xpathcss其它方法
id属性定位//*[@id='值']#id值id定位方法
class属性定位//*[@class='值'].classclass定位方法
标签定位//标签标签tag_name定位方法
属性定位//*[@属性名='值'][属性名=值]不支持
标签+属性定位//标签[@属性名='值']标签[属性名=值]不支持
逻辑+属性定位//标签[@属性名='值' and @属性名1='值1']标签[属性名=值][属性名=值]不支持
路径定位//标签[@属性名='值']/标签[@属性名='值']标签[属性名=值]/[属性名1=值]不支持

你可以看到,通过xpath和css基本能实现所有的定位 ,而xpath 能实现的css也能实现 ,反过来也一样 ,所以 ,这两个其实熟悉一个就可以了 。


http://www.ppmy.cn/embedded/3905.html

相关文章

蓝桥杯竞赛类型:Web应用开发 全程详解

既然大家准备报名蓝桥杯,那么对蓝桥杯就应该有一定的了解了。没有了解也没关系,简单来说,蓝桥杯就是一个计算机竞赛,竞赛类型大多是使用各种语言写算法,当然还有本文的主体——Web应用开发。对蓝桥杯有了基本了解之后&…

C#-使用Harmony库反射给DLL文件打Patch

一. Harmony工作原理 利用C#运行时Runtime的反射机制,动态加载dll中的方法,字段,属性,实现对DLL方法的重写和代码注入。 二. Harmony下载及安装 通过创建Harmony实例,调用PatchAll()方法实现补丁类的加载 #加载已经实现的补丁类,重写原有DLL中方法 var harmonyPatch new Har…

Linux之命令行参数的原理以及实现,环境变量限时增加删除和永久增加删除以及代码获取环境变量

个人主页:点我进入主页 专栏分类:C语言初阶 C语言进阶 数据结构初阶 Linux C初阶 算法 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂 一.命令行参数 1.1main函数参数 在我们学习c语言时我们的main函数…

ShardingSphere:强大的分布式数据库中间件【图文】

ShardingSphere的诞生 ShardingSphere的结构 Sharding-JDBC :它提供了一个轻量级的 Java 框架,在 Java 的 JDBC 层提供额外的服务。使用客户端直连数据库,以 jar 包形式提供服务,无需额外部署和依赖,可理解为增强版的 JDBC 驱动&…

在STM32中给固定的地址写入一个值,并通过memory窗口进行查看

首先对STM32中存储数据的地方有一个了解 一个是FLASH,一个是RAM RAM是易失存储器,FLASH是非易失存储器,这是最直观的解释。 主要记住以下几点: RAM(随机存储器):既可以从中读取数据,也可以写…

Java中的封装性与几种权限修饰符

Java中的封装性与几种权限修饰符 在Java编程中,封装性是一个核心概念,它涉及到将数据(变量)和对这些数据进行的操作(方法)绑定在一起,形成一个独立的单元。封装有助于隐藏对象的内部状态和实现…

sprinboot+vue集成neo4j图数据库

一 、java后台 1.1 package com.admin.domain;/*** 功能描述:** author wangwei* date 2024-01-15 22:13*/ public class ConnectWeb {private String connectWebId;private String connectWebName;private String connectWebInfo;private String personWebIdAlph…

【网络编程】如何创建一个自己的并发服务器?

hello !大家好呀! 欢迎大家来到我的网络编程系列之如何创建一个自己的并发服务器,在这篇文章中,你将会学习到在Linux内核中如何创建一个自己的并发服务器,并且我会给出源码进行剖析,以及手绘UML图来帮助大家…