selenium常见难点解决方案
勾选框勾选问题
勾选框代码逻辑实现过程:
第一步:首先找到勾选框的元素;
第二步:检查它是否已经被勾选。如果已经勾选,则进行取消勾选操作;如果未勾选,则进行点击勾选操作;
以下是一个示例代码,演示了如何在 Selenium 中实现这一逻辑:
#加上等待操作
checkbox = WebDriverWait(driver, 15).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="app"]/div[1]/div[2]/div/div/div[2]/div/div[2]/div/div[2]/div[2]/div/div/div[5]/div[1]/label')))
is_checked = "is-checked" in checkbox.get_attribute("class")
if is_checked:print("不勾选")
else:# 如果未勾选,则进行点击勾选操作checkbox3.click()print("勾选")
#勾选代码简化操作:
checkbox.click() if not is_checked else None
在这个示例中,我们首先找到了勾选框的元素,然后通过检查它的 class 属性来确定是否已经被勾选。如果已经勾选,则执行取消勾选操作;如果未勾选,则执行点击勾选操作。
存在多个勾选框的问题
#以下是对多个勾选框的简单封装过程,仅供参考:def WebDriverWaitOperaton(self, checkparams):"""等待时间封装:param checkparams: :return: """return WebDriverWait(self.driver, 15).until(EC.element_to_be_clickable((By.XPATH, checkparams)))def operationChoose(self):"""操作多个勾选框:return:"""#勾选框操作checkboxes = ["checkbox", "checkbox1", "checkbox2", "checkbox3"] #将多个勾选框统一命名#循环遍历for checkbox_name in checkboxes:self.checkbox = self.WebDriverWaitOperaton(self.fd.get_plateform_text(checkbox_name))is_checked = "is-checked" in self.checkbox.get_attribute("class")self.checkbox.click() if not is_checked else Noneself.fd.get_plateform_text(checkbox_name)
是获取到对应元素定位信息具体看每个人的封装是如何,可以简单的附上自己用的代码过程仅供参考:def get_plateform_text(self, key):read_ini = ReadIni(file_name="../config/PlateformRegisterElement.ini")data = read_ini.get_value(key)# 获取到readini指定的格式的值如:id>register_nickname# 使用split拆分值,以>为分隔符,左侧为定位方式,右侧为页面元素信息by = data.split('>')[0]value = data.split('>')[1]self.logger.info("定位方式:" + by + "--->定位值:" + value)try:if by == 'id':return valueelif by == 'name':return valueelif by == 'className':return valueelse:return valueexcept:return None
调试产生的多个chromedriver
UI自动化调试期间会有很多打开的浏览窗口和CMD窗口。
目前比较好的解决方案是使用浏览器端口复用或者采用直接kil的方法:
import osos.system('taskkill /im chrome.exe /F') # 关闭所有谷歌浏览驱动
os.system('taskkill /im chromedriver.exe /F') # 关闭所有谷歌浏览器驱动
os.system('taskkill /im conhost.exe /F') # 关闭所有cmd小黑窗加上几行代码:
悬浮窗口解决方案
第一步:悬浮窗口一般是先移动到悬浮窗口位置;
第二步:等待悬浮窗口元素出现,出现后点击对应的悬浮菜单;
第三步:使用hover方法对元素进行操作,具体代码如下:
# 定位到要悬停的元素
hover_element = driver.find_element_by_xpath('移动到悬浮位置')
actions = ActionChains(driver)
actions.move_to_element(hover_element).perform()
# 悬停操作后的操作,例如点击悬停后出现的菜单项
hover_element.find_element_by_xpath('待点击的元素定位信息').click()
搜索窗口点击指定元素:
一般搜索窗口会有模糊查询的内容:
第一步:先定位到搜索框;
第二步:输入指定的要搜索的元素名称;
第三步:使用execute_script()对元素进行点击操作
company_name = "哈尔滨华南城有限公司"
jg_name = driver.find_element_by_xpath('//*[@id="app"]/div[1]/div[2]/div/div/div[1]/div[2]/form/div[2]/div[1]/div[1]/div/div[1]/div/input').send_keys(company_name)
wait = WebDriverWait(driver, 10)
target_element = wait.until(EC.visibility_of_element_located((By.XPATH, f"//ul[contains(@class, 'el-autocomplete-suggestion__list')]//li[contains(text(), '{company_name}')]")))
# 使用JavaScript执行点击操作
driver.execute_script("arguments[0].click();", target_element)
搜索窗口点击指定元素示意图:

相关文章:
selenium常见难点解决方案
勾选框勾选问题 勾选框代码逻辑实现过程: 第一步:首先找到勾选框的元素; 第二步:检查它是否已经被勾选。如果已经勾选,则进行取消勾选操作;如果未勾选,则进行点击勾选操作; 以下是一…...
【Python高级编程】 综合练习-使用OpenCV 进行视频数据处理
综合练习 读取一个视频文件,对其进行处理后保存为一个新的视频文件。具体的处理步骤包括调整帧大小、转换为灰度图像、垂直翻转画面以及添加高斯噪声。 下面是代码的详细实现: import cv2 import numpy as np# 定义一个函数,用来给图像添加…...
rs232和can的区别
在电机通讯和升级固件时我们经常用到RS232和CAN两种通讯模式,那这两种有何不同吗? RS232和CAN的主要区别在于通信方式、应用场景、传输距离、通信速度以及网络结构。 通信方式: RS232是一种串行通信接口标准,支持全双工通信&…...
嵌入式软件stm32面试
一、STM32的内核型号有哪些? STM32系列是STMicroelectronics(意法半导体)生产的基于ARM Cortex-M内核的微控制器产品线。这些产品按照不同的内核架构和性能特点分为了主流产品、超低功耗产品和高性能产品。 1.1 主流产品 STM32F0 系列&…...
【Git】-- 添加公钥到 github 或者gitlab上
仅针对系统:mac os 、 unix、linux 1、检查是否有 id_rsa.pub $ cd ~ $ ls -al ~/.ssh 注意:若已有 id_rsa.pub,则必要执行 第二步,避免覆盖掉原有正常的公钥。 配置多个 git 账号请参考:同一台电脑配置多个git账…...
Vue页面生成PDF后调起浏览器打印
一、安装依赖 首先,需要安装 html2canvas 和 jsPDF 库。 npm install html2canvas jspdf二、创建公共方法引入 在utils文件夹下创建两个文件分别为pdfExport.js和printPDF.js,代码如下: pdfExport.js import html2canvas from html2canv…...
纯前端实现导出excel
项目背景: vue2 插件: xlsx;xlsx-style;file-saver 说明: 单独使用 xlsx插件,也可以将网页上的table导出成excel,但是导出的excel,没有样式 结合xlsx-style;file-saver&a…...
QT windows 5.12.0 安装包
这个是在线包,需要有账号的。 没有也没事,安装界面可以现场注册 百度网盘链接: 链接:https://pan.baidu.com/s/1QvXDert4b94GbUfD2f2G4g?pwd8888 提取码:8888...
改进YOLOv7 | 在 ELAN 模块中添加【Triplet】【SpatialGroupEnhance】【NAM】【S2】注意力机制 | 附详细结构图
改进 YOLOv7 | 在 ELAN 模块中添加【Triplet】【SpatialGroupEnhance】【NAM】【S2】注意力机制:中文详解 1. 简介 YOLOv7 是目前主流的目标检测算法之一,具有速度快、精度高的特点。但 YOLOv7 的原始模型结构中缺乏注意力机制,导致模型对全…...
windows系统停止更新办法
windows系统停止更新 双击启动下载的文件 然后再回到系统-更新这里,选择日期就行。...
数据标注概念
数据标注的步骤 数据清洗:处理数据中的噪声、缺失值和异常值,确保数据的质量和完整性。 数据转换:将数据从原始格式转换为适合机器学习模型处理的格式。 数据标注:根据应用需求,为数据添加标签或注释,标识…...
网络安全复习笔记
概述 要素 CIA:可用性;完整性;保密性。 可控性;不可否认性;可审查性。 攻击 被动:窃听 - 保密性;监听 - 保密性主动:假冒 - 完整性;重放 - 完整性;改写 -…...
Laravel - excel 导入数据
在Laravel中,可以使用maatwebsite/excel这个库来处理Excel文件的导入。 1.用命令行窗口打开项目根目录,使用 Composer 安装 maatwebsite/excel composer require maatwebsite/excel --ignore-platform-reqs 在你的config/app.php文件中注册服务提供者&…...
移动语义和完美转发
C11 引入了许多新特性,使得编写高效且现代的 C 代码变得更加容易。其中,移动语义(Move Semantics)和完美转发(Perfect Forwarding)是两个重要的特性,极大地提升了 C 的性能和灵活性。 移动语义…...
【IDEA】Spring项目build失败
通常因为环境不匹配需要在file->projectstructure里面调整一下。...
【无标题】安卓app 流量
该工具可以用于安卓app 流量,内存,cpu,fps等专项内容测试,并且有整机内存,cpu对比,还可监控手机网速,app流量,数据导出等功能,重点还是免费,毕竟PerfDog收费了…...
国产化ETL产品必备的特性(非开源包装)
ETL负责将分布的、异构数据源中的数据如关系数据、平面数据文件等抽取到临时中间层后进行抽取、清洗(净化)、转换、装载、标准、集成(汇总)...... 最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础。…...
flink 操作mongodb的例子
Apache Flink 是一个流处理和批处理的开源框架,它通常用于处理大量数据流。然而,Flink 本身并不直接提供对 MongoDB 的原生支持,因为 MongoDB 是一个 NoSQL 数据库,而 Flink 主要与关系型数据库(如 JDBC 连接器&#x…...
【笔记】打卡01 | 初学入门
初学入门:01-02 01 基本介绍02 快速入门库处理数据集网络构建模型训练保存模型加载模型打卡-时间 01 基本介绍 MindSpore Data(数据处理层) ModelZoo(模型库) MindSpore Science(科学计算),包含…...
Rocky9使用cockpitweb登陆时root用户无法登陆
Rocky9使用cockpitweb登陆时root用户无法登陆 [rootlvs ~]# vim /etc/cockpit/disallowed-users [rootlvs ~]# systemctl restart cockpit 取消disallowed-users中的root,即可访问 ip:9090 登陆。...
如何准确计算宏基因组覆盖率?CoverM工具的全方位技术解析
如何准确计算宏基因组覆盖率?CoverM工具的全方位技术解析 【免费下载链接】CoverM Read alignment statistics for metagenomics 项目地址: https://gitcode.com/gh_mirrors/co/CoverM 在宏基因组研究中,覆盖率计算是评估测序深度、估算物种丰度和…...
【紧急预警】PlayAI新政策已生效!ElevenLabs未披露的商用语音水印机制曝光——2024年AI语音合规红线与替代方案速览(仅剩72小时窗口期)
更多请点击: https://intelliparadigm.com 第一章:【紧急预警】PlayAI新政策已生效!ElevenLabs未披露的商用语音水印机制曝光——2024年AI语音合规红线与替代方案速览(仅剩72小时窗口期) 水印机制逆向验证结果 通过对…...
终极指南:如何彻底解锁《原神》60帧限制?完整免费解决方案
终极指南:如何彻底解锁《原神》60帧限制?完整免费解决方案 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 你是一个文章写手,你负责为开源项目写专业易…...
从仿真到调试:FSDB与VPD波形文件的生成与高效查看指南
1. 数字IC验证中的波形文件:为什么它们如此重要? 在数字IC验证的世界里,波形文件就像是工程师的"显微镜"。想象一下,你正在调试一个复杂的RTL设计,代码运行了,但结果不对。这时候,如果…...
Jenkins Job DSL与Pipeline集成:现代DevOps工作流的10个最佳实践
Jenkins Job DSL与Pipeline集成:现代DevOps工作流的10个最佳实践 【免费下载链接】job-dsl-plugin A Groovy DSL for Jenkins Jobs 项目地址: https://gitcode.com/gh_mirrors/jo/job-dsl-plugin Jenkins Job DSL插件是现代DevOps自动化中不可或缺的工具&…...
免费LLM API集成实战:从选型到构建高可用AI服务
1. 项目概述:一个汇聚免费LLM API的宝藏仓库如果你正在开发一个需要AI对话、文本生成或代码补全功能的应用,但又被高昂的API调用费用或复杂的申请流程劝退,那么你很可能需要这个项目。Clovenhoofed-loadingarea139/awesome-free-llm-apis是一…...
如何高效配置智能游戏助手:绝区零一条龙完整使用攻略
如何高效配置智能游戏助手:绝区零一条龙完整使用攻略 【免费下载链接】ZenlessZoneZero-OneDragon 绝区零 一条龙 | 全自动 | 自动闪避 | 自动每日 | 自动空洞 | 支持手柄 项目地址: https://gitcode.com/gh_mirrors/ze/ZenlessZoneZero-OneDragon 还在为《绝…...
一本通题解——从递推公式到状态转移:破解“位数问题”中的数字计数
1. 从具体问题到通用模型:理解数字计数的本质 遇到"统计N位数中偶数个3的个数"这类问题时,很多初学者会陷入暴力枚举的思维陷阱。我刚开始刷题时也犯过这个错误——试图手动列出所有两位数来验证样例。这种方法的局限性在N1000时就会暴露无遗…...
基于微信小程序的校园水果配送商城毕设源码
博主介绍:✌ 专注于Java,python,✌关注✌私信我✌具体的问题,我会尽力帮助你。一、研究目的本研究旨在构建一个基于微信小程序的校园水果配送商城系统以解决传统校园水果采购与配送模式中存在的效率低下问题。当前高校后勤管理普遍面临供应链管理复杂、信…...
终极指南:如何用SMUDebugTool免费深度调校你的AMD Ryzen处理器 [特殊字符]
终极指南:如何用SMUDebugTool免费深度调校你的AMD Ryzen处理器 🚀 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. …...
