selenium模块,web自动化,元素定位

news/2025/2/26 18:01:47/文章来源:https://www.cnblogs.com/circlecircle/p/18564771

1. 元素定位

查看网页元素

右键-->检查

from selenium.webdriver.common.by import By  # 元素定位包# 使用
test.find_element(By.XXX)

 

1)定位元素ID--对应浏览器id

# 定位一个元素
a = test.find_element(By.ID, value="wrapper")
print(a)
# 定位多个元素(返回列表)
b = test.find_elements(By.ID, value="wrapper")
print(b)

① 例子

from selenium import webdriver  # 用于操作浏览器
from selenium.webdriver.chrome.options import Options # 用于设置谷歌浏览器
from selenium.webdriver.common.by import By  # 元素定位包import time
def chrom():# 创建设置浏览器对象chrome_set = Options()# 禁用沙河模式(提高兼容性)chrome_set.add_argument("--no-sandbox")# 保持浏览器打开状态(默认代码执行完毕后自动关闭)chrome_set.add_experimental_option(name="detach", value=True)# 创建并启动浏览器chrome = webdriver.Chrome(executable_path="chromedriver.exe", options=chrome_set)return chrometest = chrom()
# 打开指定网站
test.get("https://www.baidu.com")
time.sleep(1)
# 关闭当前标签页# test.get_screenshot_as_file("1.png")
# test.refresh()
# test.close()# 定位一个元素
a = test.find_element(By.ID, value="wrapper")
print(a)
# 定位多个元素(返回列表)-- 需要进行切片处理
b = test.find_elements(By.ID, value="wrapper") 
print(b)
# 退出浏览器(关闭所有标签页)
time.sleep(
2)
test.quit()

② 浏览器定位多个元素(浏览器控制台查看)

# 浏览器定位多个元素(浏览器控制台查看)
document.getElementById("wrapper")

 2. 元素输入


# 定位一个元素
a = test.find_element(By.ID, value="kw")
print(a)
# 元素输入 a.send_keys(
"豆瓣") # 定位到按钮 b = test.find_element(By.ID, value="su") # 元素点击 b.click()# 元素清空 a.clear()
from selenium import webdriver  # 用于操作浏览器
from selenium.webdriver.chrome.options import Options # 用于设置谷歌浏览器
from selenium.webdriver.common.by import By  # 元素定位包import time
def chrom():# 创建设置浏览器对象chrome_set = Options()# 禁用沙河模式(提高兼容性)chrome_set.add_argument("--no-sandbox")# 保持浏览器打开状态(默认代码执行完毕后自动关闭)chrome_set.add_experimental_option(name="detach", value=True)# 创建并启动浏览器chrome = webdriver.Chrome(executable_path="chromedriver.exe", options=chrome_set)return chrometest = chrom()
# 打开指定网站
test.get("https://www.baidu.com")
time.sleep(1)# 定位一个元素
a = test.find_element(By.ID, value="kw")
print(a)
a.send_keys("豆瓣")
# 定位到按钮
b = test.find_element(By.ID, value="su")
# 元素点击
b.click()# 元素清空
a.clear()
a.send_keys("电影")# 退出浏览器(关闭所有标签页)
time.sleep(2)
test.quit()

 

 

 

3.元素定位NAME--对应浏览器name

# 定位一个元素
a = test.find_element(By.NAME, value="wd")
print(a)

 

4. 元素定位CLASS_NAME--对应浏览器class

# 注意:class内容不能有空格
a = test.find_element(By.CLASS_NAME, value="s_ipt") print(a)

 

5.元素定位TAG_NAME--对应浏览器html中的标签

# 定位一个元素
a = test.find_element(By.TAG_NAME, value="input")
print(a)
# 定位多个元素,需要切片处理
a = test.find_elements(By.TAG_NAME, value="input")[0]
print(a)

 

6.元素定位LINK_TEXT(精准定位)--对应浏览器的文字链接

a = test.find_element(By.LINK_TEXT, value="新闻")
a.click()

 

7.元素定位PARTIAL_LINK_TEXT(模糊定位)--对应浏览器的文字链接

a = test.find_element(By.PARTIAL_LINK_TEXT, value="")
a.click()

 

8.元素定位CSS_SELECTOR

① #id = 通过id定位

a = test.find_element(By.CSS_SELECTOR, value="#kw")

 

②.class = 通过class定位

a = test.find_element(By.CSS_SELECTOR, value=".s_ipt")

③ 不加修饰 = 通过标签头定位

a = test.find_element(By.CSS_SELECTOR, value="input")

④ 通过任意类型定位

# 格式 "[类型='精准值']"
a = test.find_element(By.CSS_SELECTOR, value="[maxlength='255']")# 格式 "[类型*='模糊值']"
a = test.find_element(By.CSS_SELECTOR, value="[maxlength*='255']")# 格式 "[类型^='开头值']"
a = test.find_element(By.CSS_SELECTOR, value="[maxlength^='255']")# 格式 "[类型$='结尾值']"
a = test.find_element(By.CSS_SELECTOR, value="[maxlength$='255']")

# 更简单定位方式
浏览器-->检查-->选择要定位的位置-->右键-->copy-->selector(就用这个值)
a = test.find_element(By.CSS_SELECTOR, value="复制的值")

 

 

9.元素定位XPATH(属性+路径定位--属性如果是随机的,就会出错)

# 属性+路径定位--属性如果是随机的,就会出错
浏览器-->检查-->选择要定位的位置-->右键-->copy-->xpath(就用这个值) a = test.find_element(By.XPATH, value="复制的值")


# 纯路径定位(一般不会出错)
浏览器-->检查-->选择要定位的位置-->右键-->copy-->full xpath(就用这个值)
a = test.find_element(By.XPATH, value="复制的值")

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

22207321-王郅坚-BLOG2

前言 这三次题目集涉及了不同的知识点、编程技巧及而算法逻辑,从简单的基础题目逐步过渡到复杂的业务逻辑模拟。三次题目集不仅是单单考核独立的编程任务,其实它们有明确的迭代关系,逐步递进并且不断添加复杂度。题目集1是针对前三次的题目再进行迭代升级,题目集2开始了一个…

ffmpeg 时基转换

1:av_q2d(AVRational a)函数av_q2d(AVRational);该函数负责把AVRational结构转换成double,通过这个函数可以计算出某一帧在视频中的时间位置 timestamp(秒) = pts * av_q2d(st->time_base); 计算视频长度的方法: time(秒) = st->duration * av_q2d(st->…

2024-2025-1学号20241309《计算机基础与程序设计》第九周学习总结

作业信息这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计这个作业要求在哪里 2024-2025-1计算机基础与程序设计第九周作业这个作业的目标|作业正文|2024-2025-1学号20241309《计算机基础与程序设计》第九周学习总结 教材学习内容总结 《计算机科学概论》第十章: (一)…

docker网络互通实验

需求:创建两个自定义容器,分别使用自定义网络,使其互通1. 创建容器 docker run -d --name web1 -p 80:80 httpd 2. 创建网络 docker network create --driver bridge --subnet 192.168.1.0/24 net1 docker network create --driver bridge --subnet 171.16.1.0/24 net2 …

Windows下命令行及Java+Tesseract-OCR对图像进行(字母+数字+中文)识别,亲测可行

第一步:下载Tesseract OCR引擎安装包 访问Tesseract的GitHub发布页面(https://github.com/tesseract-ocr/tesseract)或第三方下载站点(https://digi.bib.uni-mannheim.de/tesseract/),下载适合你操作系统的版本(最新版本)。 推荐使用第三方下载:第二步:详细阐述一下第…

海思 uboot 编译

用默认配置烧录:本文来自博客园,作者:封兴旺,转载请注明原文链接:https://www.cnblogs.com/fxw1/p/18564721

java-BLOG-2

1.前言: 第四次题目集: 这次题目集的第一和第二个题目比较简单,很容易可以做出来,只是用到了一个新的知识点——继承,继承(Inheritance)是面向对象编程的核心特性之一。它允许一个类(子类)继承另一个类(父类)的属性和方法,从而实现代码复用和功能扩展。继承是通过e…

用Java实现AI人脸比对

AI人脸比对技术百度智能云注册 https://login.bce.baidu.com/?account=&redirect=https%3A%2F%2Fconsole.bce.baidu.com%2Fiam%2F#/iam/baseinfo 选择人工智能-->人脸识别认证选择-->立即使用选择免费尝鲜(领取之后五分钟就可以在我的应用里查看了,里面勾选所有的…

NR中各种ID

NCGI(NR CELL Global Identifier):全球标识一个 NR 小区的号码PLMN(Public Land Mobile Network):国家码 MCC(Mobile Country Code)+网络码 MNC(Mobile NetWork Code),此号码唯一标识了某一个国家的某一个运营商NCI(NR CELL ID):标识 NR 中的一个 CELL GNBID:唯一标识一个基…

OOPTA4-6习题集总结

(1)前言 这三次作业算是一个渐进和转折的过程,题目渐渐减少,主要还是要写迭代题,对我来说5-6难度还是蛮大的。4是让我学会了不少更新功能的思路和调试的方法。5-6则让我明白了代码结构的重要性。题目内容主要涉及类的设计等等,以及主要的答题判题程序还有电路系统的编写与…

第53篇 调用第三方接口时需要注意的点

前言 在我们的业务开发中,调用第三方接口已经成为常态,比如对接一些ERP系统、WMS系统、一些数据服务系统等,它极大地扩展了我们应用的功能和服务范围。然而,实际对接过程中,我们往往会在这一环节遇到各种意想不到的问题,本文将深入探讨几种常见的第三方接口调用难题及其应…