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

Selenium--定位页面上的元素

文章目录

  • 前言
  • 一、定位元素方法
  • 二、定位元素应用
    • 1.find_element_by_id()
    • 2.find_element_by_name()
    • 3.find_element_by_class_name()
    • 4.find_element_by_tag_name()
    • 5.find_element_by_link_text()
    • 6.find_element_by_partial_link_text()
    • 7.find_element_by_xpath()
    • 8.find_element_by_css_selector()


前言

UI自动化的正常流程如下:
1、打开浏览器
2、打开网页
3、定位元素
4、操作元素
那么在进行自动化之前,除了搭建运行环境外,需要学会定位元素

一、定位元素方法

元素名称webdriver api
idfind_element_by_id()
namefind_element_by_name()
class namefind_element_by_class_name()
tag namefind_element_by_tag_name()
link textfind_element_by_link_text()
partial link textfind_element_by_partial_link_text()
xpathfind_element_by_xpath()
css selectorfind_element_by_css_selector()

二、定位元素应用

1.find_element_by_id()

代码如下(示例):

from selenium import webdriver
import time

# 打开chrome浏览器
driver = webdriver.Chrome()
# 打开百度搜索页面
driver.get('https://www.baidu.com')
# 通过id定位
driver.find_element_by_id('kw').send_keys('selenium')
# 强制等待2秒查看效果
time.sleep(2)
# 关闭浏览器
driver.quit()

2.find_element_by_name()

代码如下(示例):

from selenium import webdriver
import time

# 打开chrome浏览器
driver = webdriver.Chrome()
# 打开百度搜索页面
driver.get('https://www.baidu.com')
# 通过name定位
driver.find_element_by_name('wd').send_keys('selenium')
# 强制等待2秒查看效果
time.sleep(2)
# 关闭浏览器
driver.quit()

3.find_element_by_class_name()

代码如下(示例):

from selenium import webdriver
import time

# 打开chrome浏览器
driver = webdriver.Chrome()
# 打开百度搜索页面
driver.get('https://www.baidu.com')
# 通过name定位
driver.find_element_by_class_name('s_ipt').send_keys('selenium')
# 强制等待2秒查看效果
time.sleep(2)
# 关闭浏览器
driver.quit()

4.find_element_by_tag_name()

代码如下(示例):

from selenium import webdriver
import time

# 打开chrome浏览器
driver = webdriver.Chrome()
# 打开百度搜索页面
driver.get('https://www.baidu.com')
# 通过name定位
driver.find_element_by_tag_name('h').send_keys('selenium')
# 强制等待2秒查看效果
time.sleep(2)
# 关闭浏览器
driver.quit()

5.find_element_by_link_text()

代码如下(示例):

from selenium import webdriver
import time

# 打开chrome浏览器
driver = webdriver.Chrome()
# 打开百度搜索页面
driver.get('https://www.baidu.com')
# 通过name定位
driver.find_element_by_link_text('hao123').click()
# 强制等待2秒查看效果
time.sleep(2)
# 关闭浏览器
driver.quit()

6.find_element_by_partial_link_text()

代码如下(示例):

from selenium import webdriver
import time

# 打开chrome浏览器
driver = webdriver.Chrome()
# 打开百度搜索页面
driver.get('https://www.baidu.com')
# 通过partial_link_text定位
driver.find_element_by_partial_link_text('图').click()
# 强制等待2秒查看效果
time.sleep(2)
# 关闭浏览器
driver.quit()

7.find_element_by_xpath()

代码如下(示例):

from selenium import webdriver
import time

# 打开chrome浏览器
driver = webdriver.Chrome()
# 打开百度搜索页面
driver.get('https://www.baidu.com')
# 通过partial_link_text定位
driver.find_element_by_xpath("//p[@id='kw']").click()
# 强制等待2秒查看效果
time.sleep(2)
# 关闭浏览器
driver.quit()

8.find_element_by_css_selector()

类型说明
#idid选择器 根据id属性来定位元素
.classclass选择器 根据class属性值来定位元素
[attribute=‘value’]根据属性来定位元素
element>element根据元素层级来定位 父元素>子元素

代码如下(示例):

from selenium import  webdriver
from time import  sleep

# 打开chrome浏览器
driver = webdriver.Chrome()
# 打开百度搜索页面
driver.get('https://www.baidu.com')


#1:通过id来定位
#driver.find_element_by_css_selector("#kw").send_keys("selenium") 通过id来定位前面需要加#号+id

#2:通过class来定位
#driver.find_element_by_css_selector('.s_ipt').send_keys('selenium') #class来定位,class前面+.

#3:通过属性来定位
#driver.find_element_by_css_selector("[autocomplete='off']").send_keys('selenium')   #属性要在[]里面


# 强制等待2秒查看效果
time.sleep(2)
# 关闭浏览器
driver.quit()

相关文章:

  • JTAG、SWD调试原理简析
  • cmake语法:option,add_definition,add_dependencies的基本作用
  • Nmap详细使用
  • CREO:CREO软件之工程图【注释】之尺寸、注解、表面粗糙度、符号、几何公差的简介及其使用方法(图文教程)之详细攻略
  • FastAPI 学习之路(三十)中间件
  • Springboot整合redis
  • Python对象序列化
  • Linux-Linux内核-进程调度
  • LabVIEW重入:允许同时调用同一子VI
  • 『网易实习』周记(五)
  • 【glib】vs2022 v163 debug win32: meson构建 glib-2.67.6
  • JlinkV9的Vtref详解
  • Thinkphp5.1对接ueditor(自定义上传接口)
  • “双非”渣本投岗爱奇艺(Java),三轮技术面等消息,侥幸通过!
  • FlinkSQL系列04-CDC连接器
  • golang中接口赋值与方法集
  • JavaScript的使用你知道几种?(上)
  • php的插入排序,通过双层for循环
  • Rancher如何对接Ceph-RBD块存储
  • React的组件模式
  • Redis的resp协议
  • tensorflow学习笔记3——MNIST应用篇
  • 动态规划入门(以爬楼梯为例)
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 聊聊flink的TableFactory
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 设计模式走一遍---观察者模式
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 项目实战-Api的解决方案
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 终端用户监控:真实用户监控还是模拟监控?
  • RDS-Mysql 物理备份恢复到本地数据库上
  • 大数据全解:定义、价值及挑战
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • "无招胜有招"nbsp;史上最全的互…
  • (2020)Java后端开发----(面试题和笔试题)
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (AngularJS)Angular 控制器之间通信初探
  • (done) 两个矩阵 “相似” 是什么意思?
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (独孤九剑)--文件系统
  • (二)pulsar安装在独立的docker中,python测试
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (利用IDEA+Maven)定制属于自己的jar包
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)母版页和相对路径
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • *2 echo、printf、mkdir命令的应用
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法