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)

搜索窗口点击指定元素示意图:
在这里插入图片描述

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

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

相关文章

audacity音频处理

1.安装 Audacity | Free Audio editor, recorder, music making and more! 添加OpenVINO插件: https://zhuanlan.zhihu.com/p/676542556 2.使用 2.1注意事项 1.编辑音频,点击左上方打开或导入都可以;打开视频文件则需要安装ffmpeg模块,打开后只显示视频中的音频信息; 2.编辑…

可变分区管理 分区分配算法

First Fit Algorithm Best Fit Algorithm FFA:按照分区编号找到第一个能装下进程的起始地址填入第二个表 此时 原表中将起始地址进程大小 分区大小-进程大小 如此继续 BFA:按分区大小排序 从小到大 找到第一个能装下的 剩余步骤和FFA一样 装满了可以直…

ls命令的参数选项

ls命令的参数的作用 可以指定要查看的文件夹(目录)的内容,如果不指定参数,就查看当前工作目录的内容。ls 命令的选项 常用语法:ls [-a -l -h] [linux路径] -a 选项表示 all ,即列出全部内容,包括…

北航数据结构与程序设计图部分选填题

一、 抓两个关键信息:无向图,邻接表。无向图中,边(vi,vj)要在vi的链表中记录一次,再以(vj,vi)的形式在vj的链表中记录一次。 每个边都要记录两次&#xff0c…

文心一言 VS 讯飞星火 VS chatgpt (285)-- 算法导论21.2 4题

四、请给出图 21-3 所示操作序列的一个运行时间的渐近紧确界,假定使用链表表示和加权合并启发式策略。如果要写代码,请用go语言。 文心一言: 图 21-3 没有直接给出,但通常这种操作序列可能与某种数据结构(如并查集或…

Seal^_^【送书活动第7期】——《IT项目经理进阶之道》

Seal^_^【送书活动第7期】——《IT项目经理进阶之道》 一、参与方式二、本期推荐图书2.1 作者荐语2.2 编辑推荐2.3 图书简介2.4 前言2.5 目 录 三、正版购买 从领导、客户、下属、供应商四个角度,介绍IT项目经理在实际工作中需要面对的挑战,以及一些常见…

【C++】哈希的概念及STL中有关哈希容器的使用

目录 前言一、unordered系列关联式容器1.1 标准库中的unordered_set1.1.1 unordered_set的介绍1.1.2 unordered_set的常用接口说明1.1.2.1 unordered_set对象的常见构造1.1.2.1.1 [无参构造函数](https://legacy.cplusplus.com/reference/unordered_map/unordered_map/)1.1.2.1…

laravel中如何向字段标签添加工具提示

首先,您可以使用 轻松自定义字段标签->label()。我相信您知道这一点。但您知道吗……标签输出未转义?这意味着您也可以在标签中包含 HTML。 为了尽快实现上述目标,我只是采取了一个快速而粗糙的解决方案: CRUD::field(nickna…

常用快捷键-快速开发-mac idea 查看侧边栏tool window project+新建文件快捷键

背景:来到公司后,换了mac系统,有点不习惯,于是自己重新设置了开发的快捷键 1、mac idea 查看侧边侧栏(专业说法是Tool Window Project): 每次我们都要点击一下左上角的这个类似于文件夹的图标…

竞赛选题 python 机器视觉 车牌识别 - opencv 深度学习 机器学习

1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于python 机器视觉 的车牌识别系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分创新点:3分 🧿 更多资…

代码走查的一个实例

1996年6月23日至7月1日,我被点名到四川某单位协助排查某系统的技术问题。 我不懂该系统的原理,也不懂硬件,只能从软件角度分析问题。 那时,我所在单位已经为一家美国公司做了3年的软件第三方独立验证和测试,从中学到…

基于随机森林的鲍鱼年龄预测

文章目录 1.作者介绍2.关于理论方面的知识介绍2.1 背景介绍2.1.1基本概念2.1.2算法步骤2.1.3优势2.1.4劣势2.1.5应用场景2.1.6随机森林的重要变体2.1.7相关理论 2.2随机森林算法架构2.2.1 数据预处理与采样2.2.2构建决策树2.2.3决策树的训练2.2.4集成模型2.2.5 模型…

写给程序员看的LangChain入门指南来了(送PDF版)

《LangChain入门指南》 LangChain作为大模型集成框架鼎鼎大名,这本《LangChain入门指南》是一本很及时的书,值得推荐~ 01 为什么需要LangChain 首先想象一个开发者在构建一个LLM应用时的常见场景。 当你开始构建一个新项目时,…

初阶 《数组》 3. 数组越界

3. 数组越界 数组的下标是有范围限制的。 数组的下规定是从0开始的,如果数组有n个元素,最后一个元素的下标就是n-1。 所以数组的下标如果小于0,或者大于n-1,就是数组越界访问了,超出了数组合法空间的访问。 C语言本身…

极验行为式验证码适配Harmony 鸿蒙SDK下载

现阶段,越来越多的开发者正在积极加入鸿蒙生态系统。随着更多开发者的参与,早在去年9月,极验就成为首批拥有鸿蒙NEXT内测版本和手机系统测试机会的验证码供应商。 为了提高各开发者及企业客户集成鸿蒙版本行为验4.0的效率,方便大家…

leetcode 动态规划 (基础版) 下降路径最小和

题目: 题解: 这题和三角型路径和相似,但这题无法在像哪一题一样通过换一个方向逃避下标特判。所以这道题就写一个下标特判的方案。特殊的下标是每一行的第一个元素和最后一个元素,它们由头上的一个元素和左上和右上中的其中一个…

python magic_number对照表(python1.5-python3.12)

文章目录 前言获取Magic NumberMagic Number对照表 其它相关推荐: Python3.9及以上Pyinstaller 反编译教程(exe转py) 前言 Python3.7及以上版本的编译后二进制文件中,头部除了四字节Magic Number,还有四个字节的空位和八个字节的时间戳 大小…

Spring Boot组件化与参数校验

Spring Boot组件化与参数校验 Spring Boot版本选择 2.3.x版本 2.6.x版本 Spring Boot核心思想 约定大于配置,简化繁琐的配置 Spring Boot自动配置原理 SpringBootApplication: Spring Boot应用标注在某个类上说明这个类是SpringBoot的主配置类,Spr…

【AI副业指南】用AI做心理测试图文号,单月稳赚7000+(附详细教程)

大家好,我是画画的小强 因为AI的出现,很多自媒体副业项目变得简单容易上手,也给予很多想要在业余时间变现的朋友更丰富的项目选择。 今天分享的赛道绝对颠覆大家的认知,本期将叫大家如何通过AI在自媒体平台上做心理测试账号。 …

不同版本的 Rocky Linux 快速更换阿里镜像源

环境:兼容 Rocky Linux 任意版本。 搞服务器系统从 CentOS 折腾到 Rocky Linux,然后又折腾到 Alma Linux;最近因为 RKE2 没有做 Alma Linux 的兼容性,又折腾到了 Rocky Linux ,真的是一把鼻涕一把泪呀。但是实在是不理…