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

selenium+pyqt5自动化工具总结

说明:本工具是,操作外部google浏览器、selenium是无法操作qt界面中嵌套的浏览器的,

工具在后面

1. 代码结构

pycharm打开的文件下,再写一个子文件,文件导入的时候把子文件名带上

这样就可以在 外层使用命令 pyinstaller -F -w selenium_tool\main.py  (-w是不要黑窗口)

2. 项目思路

1. 路径下放一个resource目录,目录下又有 ui 文件夹, 和images文件夹。

2. qtdesigner设计中,设计ui文件。转成py文件放到 resources路径下

3. 内层的selenium_tool 路径下,放各自界面的逻辑文件,如caselist_window.py

4. 主文件main.py

3. 窗口show的逻辑

1 。用例列表的窗口 和 步骤列表窗口的show,写在main

        这样做的可以有的好处就是,caselistwinow  和stepslistwindow 两个文件都是独立的

        (比如:要升级一个窗口,单独去升级代码就行了,不影响 两一个窗口)

2. 【新增编辑步骤窗口的show逻辑】,是直接写到【步骤列表窗口】的逻辑代码中 

4. caselist_winodow中,不引入 步骤窗口,如何打开步骤窗口

1. 用例窗口中,创建信号和发射信号

2 .外部文件中,用例窗口实例, 监听信号, 并做对应的槽函数

5. add或编辑步骤窗口的关闭(同上)

【新增或编辑步骤窗口】中自定义信号 和发射信号

6. add或编辑步骤窗口 的 提醒外部刷新 的信号

自定义信号和发射信号

7. 用例列表窗口中,防止按钮被多次点击

如下图,两个地方,需要防止多次点击

如第一个地方,原来的代码是(点击【编辑步骤】,打开另一个窗口):

elif action =="编辑步骤":current_test_case_id = self.tableWidget.item(row, 0).text()current_test_case_name = self.tableWidget.item(row, 1).text()# 发射信号,外部去监听,一收到就要代开另一个窗口self.show_stepswindow_signal.emit(current_test_case_id, current_test_case_name)

如果多次,点击 【编辑步骤】按钮, 就会打开多次窗口,存在bug

解决方法:

点击之后,就把按钮禁用,然后到try中去实现逻辑,finally,300毫秒后,再把按钮启用

8. 步骤列表窗口中,打开【add或编辑步骤窗口时】防止多次点击(基本同上)。

本来打开 【add或编辑步骤窗口时】是 edit_step 和 add_step()方法,解决方法就是再封装到另一个方法中,传如button, 一开始就禁用button

9.  from functools import partial 的使用。

它是一个类似lambda的东西,用法如下:

在步骤列表stepslist_window中,有遍历数据,然后给每行数据加了按钮。

遍历中,有这行代码:

edit_button.clicked.connect(lambda : self.safe_edit_step(edit_button,row_index))

如果是这样写的, 

edit_button,始终是最后一个。按钮置灰的也是最后一个才置灰,打开的也是最后一个步骤的内容 

如果改成这样写 ,就可以把每次遍历到的 edit_button 用起来,传到方法中。

 edit_button.clicked.connect(partial(self.safe_edit_step, edit_button,row_index))

原因分析

10. 项目中多线程的使用

每次,start(),去完成执行方法时,他就是多线程。 代码中并且向外部发射信号,执行一步,就可以打印日志。

工具

如下:仅学习使用、可私信我源码:

通过网盘分享的文件:main.exe
链接: https://pan.baidu.com/s/1v-q9sqNCv-a371Qg4LqtYQ?pwd=9yqd 提取码: 9yqd 

要想实现qt界面中的浏览器操作,要使用js 

from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtCore import QUrl
import sys"""
如果你熟悉 JavaScript,就可以利用 PyQt 的 QWebEngineView 提供的 runJavaScript() 方法,在 Qt 界面中的浏览器中实现类似 Selenium 的操作。
通过 JavaScript,你可以操作网页中的 DOM 元素,模拟用户交互(如点击按钮、填写表单、提交请求等)。
"""class Window(QWidget):def __init__(self):super().__init__()self.setWindowTitle("控制 QWebEngineView 中的网页")self.resize(1000, 1000)self.set_ui()def set_ui(self):# 按钮self.btn = QPushButton("模拟输入和搜索", self)self.btn.move(10, 10)self.btn.clicked.connect(self.simulate_web_interaction)# 嵌入 QWebEngineViewself.web_view = QWebEngineView(self)self.web_view.setGeometry(50, 50, 800, 600)self.web_view.load(QUrl("https://www.baidu.com"))def simulate_web_interaction(self):# 在 QWebEngineView 中执行 JavaScriptscript = """document.querySelector('input[name="wd"]').value = 'Python';  // 输入内容document.querySelector('form').submit();                      // 提交表单"""self.web_view.page().runJavaScript(script)if __name__ == "__main__":app = QApplication(sys.argv)window = Window()window.show()sys.exit(app.exec_())


 

相关文章:

selenium+pyqt5自动化工具总结

说明:本工具是,操作外部google浏览器、selenium是无法操作qt界面中嵌套的浏览器的, 工具在后面 1. 代码结构 pycharm打开的文件下,再写一个子文件,文件导入的时候把子文件名带上 这样就可以在 外层使用命令 pyinst…...

docker GPU安装

docker 离线安装 docker下载地址:https://download.docker.com/linux/static/stable/x86_64/ 解压: tar xzvf docker-24.0.6.tgz移动解压后的内容 sudo mv docker/* /usr/local/bin/创建 docker.service配置文件 sudo vim /etc/systemd/system/dock…...

hutool糊涂工具通过注解设置excel宽度

import java.lang.annotation.*;Documented Retention(RetentionPolicy.RUNTIME) Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER}) public interface ExcelStyle {int width() default 0; }/*** 聊天记录*/ Data public class DialogContentInfo {/**…...

Three.js教程015:全面讲解Three.js的UV与应用

文章目录 全面讲解UV与应用UV介绍代码演示完整代码全面讲解UV与应用 UV介绍 在 Three.js 中,UV 坐标(也称为纹理坐标)是用来定义纹理如何映射到三维模型上的一组二维坐标。UV 坐标的范围通常是 (0, 0) 到 (1, 1),其中: U 对应纹理的横向轴(类似于 X 轴)。V 对应纹理的…...

IOS界面传值-OC

1、页面跳转 由 ViewController 页面跳转至 NextViewController 页面 &#xff08;1&#xff09;ViewController ViewController.h #import <UIKit/UIKit.h>interface ViewController : UIViewControllerend ViewController.m #import "ViewController.h" …...

阿里mod_asr3.0集成webrtc静音算法

alibabacloud-nls-cpp-sdk-master 先到阿里官网下载nls库的源代码&#xff0c;编译生成对应的库文件和头文件。 我编译的放到了以下目录。 /home/jp/2025/alibabacloud-nls-cpp-sdk-master/build/install/NlsSdk3.X_LINUX/include/ /home/jp/2025/alibabacloud-nls-cpp-sdk-…...

[Git] git pull --rebase / git rebase origin/master

1. git pull --rebase 这个命令是用来更新当前分支的&#xff0c;它会从远程仓库拉取更新&#xff0c;然后将你的本地提交重新应用到更新后的基础之上。它相当于先执行 git fetch&#xff0c;然后在当前分支上执行 git rebase origin/。使用 --rebase 而不是默认的 merge 可以…...

Leetcode​​​​​​​3270:求出数字答案

题目描述&#xff1a; 给你三个 正 整数 num1 &#xff0c;num2 和 num3 。 数字 num1 &#xff0c;num2 和 num3 的数字答案 key 是一个四位数&#xff0c;定义如下&#xff1a; 一开始&#xff0c;如果有数字 少于 四位数&#xff0c;给它补 前导 0 。答案 key 的第 i 个数…...

第十一章 施工监测

11 施工监测 11.1 施工监测主要内容、常用仪器与方法 11.1.1 主要内容 1.目的和意义 及时掌握工程自身及周边环境风险动态、通过分析和预测工程结构及周边环境的安全状态与发展趋势&#xff0c;优化调整设计参数和施工参数提供数据支撑。为今后同类工程施工提供类比资料 2…...

Python爬虫应用领域

Python爬虫作为一种强大的数据获取工具&#xff0c;在多个领域发挥着重要作用。以下是Python爬虫在不同领域的应用情况&#xff1a; 一、数据采集与分析 &#xff08;一&#xff09;市场调研 产品信息收集&#xff1a;爬取电商平台的产品详情、价格、销量、用户评价等数据&am…...

软件架构考试基础知识 002:进程的状态与其切换

进程状态转换的说明 在操作系统中&#xff0c;进程的状态表示其当前的执行情况和资源占用情况。进程状态的转换反映了操作系统如何管理和调度进程。以下是进程状态转换的说明&#xff1a; 1. 三态模型&#xff08;Three-state Model&#xff09; 三态模型是最基础的进程状态模…...

新车月交付突破2万辆!小鹏汽车“激活”智驾之困待解

首次突破月交付2万辆规模的小鹏汽车&#xff0c;稳吗&#xff1f; 本周&#xff0c;高工智能汽车研究院发布的最新监测数据显示&#xff0c;2024年11月&#xff0c;小鹏汽车在国内市场&#xff08;不含出口&#xff09;交付量&#xff08;上险口径&#xff0c;下同&#xff09…...

VideoPlayer插件的功能和用法

文章目录 1. 概念介绍2. 使用方法2.1 实现步骤2.2 具体细节3. 示例代码4. 内容总结我们在上一章回中介绍了"如何获取文件类型"相关的内容,本章回中将介绍如何播放视频.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 播放视频是我们常用的功能,不过Flutter官方…...

.NET体系架构

引言 .NET是由微软开发的一个广泛应用的开发平台&#xff0c;旨在帮助开发者构建各种类型的应用程序&#xff0c;包括桌面应用、Web应用、移动应用和云服务。最初&#xff0c;.NET平台的构建主要集中在Windows环境上&#xff0c;但随着.NET Core和随后.NET 5及以上版本的推出&…...

QT中引入OpenCV库总结(qmake方式和cmake方式)

文章目录 前言opencv环境配置一、opencv库获取的两种方式二、qmake和cmake配置2.1、 qmake2.2、cmake2.2.1、引入opencv示例 三、qt与opencv对应关系四、问题 前言 我的软件环境&#xff0c;写在前面 Windows10QT5.12.12VS2017OpenCV4.5.4 opencv环境配置 一、opencv库获取…...

matlab系列专栏-快捷键速查手册

目录 1在命令窗口(Command Window)中 2. 在编辑器(Editor)&#xff08;m文件&#xff09;中 1在命令窗口(Command Window)中 1)【↑、↓】——切换到之前、之后运行过的命令&#xff0c;可以重复按多次来达到想要的命令。 2)【Tab】——自动补全。在Command窗口&#xff0c…...

对于 NestJS + TypeORM 查询构造器分页功能的简单二次封装

NestJS 作为 Node.js 领域备受欢迎的框架&#xff0c;其与 TypeORM 的结合为开发者提供了强大的 ORM 能力&#xff0c;简化了数据库操作。然而&#xff0c;在处理分页查询时&#xff0c;直接在每个服务方法中重复编写分页逻辑既不高效也容易出错。为此&#xff0c;我们可以通过…...

Kafka消息队列出现消息堆积如何解决

Kafka消息队列出现消息堆积&#xff0c;通常是由于消息生产速度远大于消费速度&#xff0c;可能由消费者处理能力不足、网络问题、Kafka配置不合理等原因导致。以下从多个方面介绍应对消息堆积的方法&#xff1a; 消费者端优化 提升消费并行度 增加消费者实例数量&#xff1a…...

LeetCode hot100-100

287. 寻找重复数 给定一个包含 n 1 个整数的数组 nums &#xff0c;其数字都在 [1, n] 范围内&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一个重复的整数。假设 nums 只有 一个重复的整数 &#xff0c;返回 这个重复的数 。你设计的解决方案必须 不修改 数组…...

Vue.js:现代前端开发的灵活框架

大家好&#xff01;我是 [数擎 AI]&#xff0c;一位热爱探索新技术的前端开发者&#xff0c;在这里分享前端和 Web3D、AI 技术的干货与实战经验。如果你对技术有热情&#xff0c;欢迎关注我的文章&#xff0c;我们一起成长、进步&#xff01; 开发领域&#xff1a;前端开发 | A…...

CUDNN详解

文章目录 CUDNN详解一、引言二、cuDNN的基本使用1、初始化cuDNN句柄2、创建和设置描述符 三、执行卷积操作1、设置卷积参数2、选择卷积算法3、执行卷积 四、使用示例五、总结 CUDNN详解 一、引言 cuDNN&#xff08;CUDA Deep Neural Network library&#xff09;是NVIDIA为深度…...

下载并安装MySQL

在Linux系统上下载并安装数据库&#xff08;以MySQL为例&#xff09;的步骤如下&#xff1a; 一、下载MySQL 访问MySQL官网 打开浏览器&#xff0c;访问MySQL的官方网站&#xff1a;https://www.mysql.com/。 进入下载页面 在MySQL官网首页&#xff0c;找到并点击“Downloads…...

Linux ffmpeg 基础用法

简介 FFmpeg 是一个强大的开源多媒体框架&#xff0c;用于处理视频、音频和其他多媒体文件和流。它允许转换、录制、编辑、流媒体等等。 安装 Debian/Ubuntu sudo apt update sudo apt install ffmpegRed Hat/CentOS sudo dnf install ffmpegmacOS (via Homebrew) brew i…...

【C++入门】详解(中)

目录 &#x1f495;1.函数的重载 &#x1f495;2.引用的定义 &#x1f495;3.引用的一些常见问题 &#x1f495;4.引用——权限的放大/缩小/平移 &#x1f495;5. 不存在的空引用 &#x1f495;6.引用作为函数参数的速度之快&#xff08;代码体现&#xff09; &#x1f4…...

深度学习的加速器:Horovod,让分布式训练更简单高效!

什么是 Horovod&#xff1f; Horovod 是 Uber 开发的一个专注于深度学习分布式训练的开源框架&#xff0c;旨在简化和加速多 GPU、多节点环境下的训练过程。它以轻量级、易用、高性能著称&#xff0c;特别适合需要快速部署分布式训练的场景。Horovod 的名字来源于俄罗斯传统舞…...

计算机的错误计算(二百零八)

摘要 用两个大模型计算 arccot(0.9911588354432518e10) . 保留16位有效数字。两个的输出均是错误的。代码的输出格式亦均出错。 本节题目为一读者来信提议&#xff08;不知该题目有何玄机&#xff1f;&#xff09;。 例1. 计算 arccot(0.9911588354432518e10) . 保留16位有…...

海康机器人IPO,又近了一步

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。欢迎大家到本文底部评论区留言。 海康机器人的IPO之路&#xff0c;一路跌宕起伏&#xff0c;让无数投资者和业内人士关注。这不仅仅是一家企业的上市之旅&#xff0c;更是中国智能制造…...

【环境搭建】Metersphere v2.x 容器部署教程踩坑总结

前言 Metersphere部署过程中遇到的问题有点多&#xff0c;原因是其容器的架构蛮复杂的&#xff0c;比较容易踩坑&#xff0c;所以记录一下。 介绍 MeterSphere 是开源持续测试平台&#xff0c;遵循 GPL v3 开源许可协议&#xff0c;涵盖测试管理、接口测试、UI 测试和性能测…...

系统看门狗配置--以ubuntu为例

linux系统配置看门狗 以 ubuntu 系统配置看门狗为例 配置看门狗使用的脚本文件&#xff0c;需要使用管理员权限来执行&#xff1a; 配置是&#xff1a;系统每 30S 喂一次狗&#xff0c;超过 60S 不进行投喂&#xff0c;就会自动重启。 1. 系统脚本内容&#xff1a; #!/bin/b…...

阅读笔记——《A survey of protocol fuzzing》

【参考文献】Zhang X, Zhang C, Li X, et al. A survey of protocol fuzzing[J]. ACM Computing Surveys, 2024, 57(2): 1-36.【注】本文仅为作者个人学习笔记&#xff0c;如有冒犯&#xff0c;请联系作者删除。 目录 1、Introduction 2、Background 2.1、Communication Pro…...

专门做问卷调查的一个网站/媒体公关公司

近日&#xff0c;五中全会审议通过十四五规划&#xff0c;明确提出要“推进能源革命”“建设智慧能源系统”&#xff0c;人工智能作为引领新一轮科技革命和产业革命的战略性技术&#xff0c;将在智慧能源建设中起到重要作用。 百度作为国内人工智能的领军企业&#xff0c;致力…...

苏州微网站建设/企业为何选择网站推广外包?

参考《导弹飞行力学》 对部分参数的解释: dx/dtf(t,x): 之前一直看不懂f&#xff08;t,x&#xff09;到底指的哪个式子&#xff0c;其实在开头就提出来了&#xff0c;f是dy K2△t*f(tk△t/2,xk1/2*K1)&#xff1a;t在导弹飞行力学&#xff0c;是y(0)(M中是1)&#xff0c;所…...

做网站那个公司/免费seo网站推荐一下

日期内核版本架构作者GitHubCSDN2016-05-29Linux-4.5X86 & armgatiemeLinuxDeviceDriversLinux进程管理与调度-之-进程的创建 前言 Linux下有3个特殊的进程&#xff0c;idle进程(PID0), init进程(PID1)和kthreadd(PID2) * idle进程由系统自动创建, 运行在内核态 idle进…...

宽城区网站建设/免费seo营销软件

近日使用VMware fushion 8 centos 7.0时&#xff0c;无法使用共享功能&#xff0c;所以必须安装vmtools。但是安装过程中有2个错误需要解决。 1、gcc错误 Searching for GCC... The path "" is not valid path to the gcc binary. 2、内核头文件问题 Searching for …...

浏阳网站制作公司/家庭优化大师下载

做管理者&#xff0c;带团队&#xff0c;不用些代码可以说是很多IT从业人员的职业目标&#xff0c;认为做到了管理层&#xff0c;就不用天天处理技术问题&#xff0c;写代码调设备。很多人都计划5年以后做到技术经理和技术总监&#xff0c;那么到底多久可以做到管理层呢&#x…...

河南省住建厅网站官网/南宁在哪里推广网站

为什么80%的码农都做不了架构师&#xff1f;>>> 近日&#xff0c;Cloud Toolkit正式推出了面向 IntelliJ 和 Eclipse 两个平台的新款插件&#xff0c;本文挑选了其中三个重大特性进行解读&#xff0c;点击文末官网跳转链接&#xff0c;可查看详细的版本说明。 本地…...