转 python的selenium的用法整理
更新于:2024-03-19 09:00:09
|-转 selenium3定位元素(包括父子,兄弟)及常见操作
selenium定位元素(包括父子,兄弟)及常见操作_selenium定位父元素-CSDN博客
文章目录
selenium 定位元素
- id定位:find_element_by_id()
- name定位:find_element_by_name()
- class定位:find_element_by_class_name()
- link定位:find_element_by_link_text()
- partial link定位:find_element_by_partial_link_text()
- tag定位:find_element_by_tag_name()
- xpath定位:find_element_by_xpath()
- css定位:find_element_by_css_selector()
#----------------------------------------------------------------------- # 通过元素id定位 #----------------------------------------------------------------------- driver.find_element_by_id("userid") #----------------------------------------------------------------------- # 通过class_name定位 #----------------------------------------------------------------------- # 通过class_name定位一个元素 driver.find_element_by_class_name("userclass") # 通过class_name定位一批元素,返回结果为数组,下标从0开始 driver.find_elements_by_class_name("userclass") driver.find_elements_by_class_name("userclass")[1].click() #----------------------------------------------------------------------- # 通过xpath定位元素 #----------------------------------------------------------------------- # 根据元素属性和值定位 # 定位id="userid"的元素 driver.find_element_by_xpath("//*[@id=\"userid\"]") # 定位placeholder属性为"请输入名字"的input元素,即<input placeholder="请输入名字"> driver.find_element_by_xpath("//input[@placeholder=\"请输入名字\"]") # 定位id="userid"元素-下层元素span-下层元素第二个input driver.find_element_by_xpath("//*[@id=\"userid\"]/span/input[1]") # 多条件定位 driver.find_element_by_xpath("//input[@name=\"username\" and @value=\"lxm\"]") //input[@name=continue][@type=button] # 待验证 driver.find_element_by_id("id").find_element_by_class_name("name") # 待验证 # 根据文本定位元素 # 定位文本为“世界真美好”的li元素 driver.find_element_by_xpath("//li[text()=\"世界真美好\"]") # 定位文本为“我爱这个世界”的span元素 driver.find_element_by_xpath("//span[text()=\"我爱这个世界\"]") # 定位文本为“世界真美好”的li元素-可传入变量 str = "世界真美好" driver.find_element_by_xpath("//li[text()=\"%s\"]" % str) # 根据关键字 driver.find_element_by_xpath("//a[contains(@href,\"#id1\")]") #在a标签下有个文本(text)包含(contains)网页 的元素 driver.find_element_by_xpath("//a[contains(text(),网页)]").click() #有个叫a的标签,他有个链接href=http://www.baidu.com/ 的元素 driver.find_element_by_xpath("//a[@href=http://www.baidu.com/]").click() #----------------------------------------------------------------------- # 通过tag定位元素 #----------------------------------------------------------------------- # 查找input标签的元素 driver.find_element_by_tag_name("input")
父子、兄弟节点定位
.表示当前节点,…表示父节点,/表示绝对路径,//表示相对路径...
浏览更多内容请先登录。
立即注册
更新于:2024-03-19 09:24:05
|-转 使用Selenium自动验证滑块登录
【Python从入门到进阶】39、使用Selenium自动验证滑块登录_滑块验证-CSDN博客# _*_ coding : utf-8 _*_
# @Time : 2023-10-06 9:44
# @Author : 光仔December
# @File : 豆瓣登录自动滑动验证
# @Project : Python基础
import random
import re # 正则表达式匹配库
import time # 事件库,用于硬性等待
import urllib # 网络访问
import cv2 # opencv库
from selenium import webdriver # 导入selenium的webdriver模块
from selenium.webdriver.common.by import By # 引入By类选择器
from selenium.webdriver.support.wait import WebDriverWait # 等待类
from selenium.webdriver.support import expected_conditions as EC # 等待条件类
from selenium.webdriver.common.action_chains import ActionChains # 动作类
# 封装的计算图片距离的算法
def get_pos(imageSrc):
# 读取图像文件并返回一个image数组表示的图像对象
image = cv2.imread(imageSrc)
# GaussianBlur方法进行图像模糊化/降噪操作。
# 它基于高斯函数(也称为正态分布)创建一个卷积核(或称为滤波器),该卷积核应用于图像上的每个像素点。
blurred = cv2.GaussianBlur(image, (5, 5), 0, 0)
# Canny方法进行图像边缘检测
# image: 输入的单通道灰度图像。
# threshold1: 第一个阈值,用于边缘链接。一般设置为较小的值。
# threshold2: 第二个阈值,用于边缘链接和强边缘的筛选。一般设置为较大的值
canny = cv2.Canny(blurred, 0, 100) # 轮廓
# findContours方法用于检测图像中的轮廓,并返回一个包含所有检测到轮廓的列表。
# contours(可选): 输出的轮廓列表。每个轮廓都表示为一个点集。
# hierarchy(可选): 输出的轮廓层次结构信息。它描述了轮廓之间的关系,例如父子关系等。
contours, hierarchy = cv2.findContours(canny, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 遍历检测到的所有轮廓的列表
for contour in contours:
# contourArea方法用于计算轮廓的面积
area = cv2.contourArea(contour)
# arcLength方法用于计算轮廓的周长或弧长
length = cv2.arcLength(contour, True)
# 如果检测区域面积在5025-7225之间,周长在300-380之间,则是目标区域
if 5025 < area < 7225 and 300 < length < 380:
# 计算轮廓的边界矩形,得到坐标和宽高
# x, y: 边界矩形左上角点的坐标。
# w, h: 边界矩形的宽度和高度。
x, y, w, h = cv2.boundingRect(contour)
print("计算出目标区域的坐标及宽高:", x, y, w, h)
# 在目标区域上画一个红框看看效果
cv2.rectangle(image, (x, y), (x + w, y + h), (0, 0, 255), 2)
cv2.imwrite("111.jpg", image)
return x
return 0
# 创建Chrome WebDriver对象
driver = webdriver.Chrome()
try:
# 打开豆瓣登录页
driver.get("https://accounts.douban.com/passport/login")
print(driver.title) # 打印
浏览更多内容请先登录。
立即注册
更新于:2024-11-03 23:21:57
相关内容
python代码整理(2022年4月-2024年3月)
Python和PHP获取百度url跳转的真实地址代码(2022年4月实测有效)
Pip/python-如何查看已安装的包有哪些版本?如何查看某个包存在哪些版本?pip...
用undetected_chromedriver代替selenium解决浏览器打不开网页
sublime text下 Python 问题:TabError: inconsistent use of tabs and s...
Python的扩展和模块安装时遇到的问题整理
windows环境下python3安装Crypto扩展
pip install 报错 ERROR: Can not execute setup.py since setuptools i...
运行python -V 报错 -bash: python: command not found
protobuf requires Python ‘>=3.7‘ but the running Python is 3.6.5的解...
python 学习中遇到的问题整理
没有使用asynccontextmanager ,但是报cannot import name 'asynccontextman...
python3.10.0+pyinstaller4.7打包,IndexError: tuple index out of range...
error: Microsoft Visual C++ 14.0 or greater is required.
安装conda搭建python环境(保姆级教程)
学习飞浆过程中遇到“缺少paddle.fluid”
[NLP实践01]simpletransformers安装和文本分类简单实现
primeqa 安装requirements时报错
sublime text下 Python 问题:TabError: inconsistent use of tabs and s...
uiautomation报错 No module named 'comtypes.stream' Can not load UIA...
解决无法加载UIAutomationCore.dll的报错
汉字目标点选识别-ddddocr(返回识别的内容和位置)
python 常用命令
opencv报错及解决:AttributeError: module ‘cv2‘ has no attribute ‘...
AttributeError: module 'cv2.cv2' has no attribute 'cv'
sublime text常用快捷键及多行列模式批量操作教程
python配置opencv环境后,读取图片,报错:can‘t open/read file: check f...
推荐内容