selenium中解决非input标签上传文件时的一些问题

news/2025/1/15 14:52:40/文章来源:https://www.cnblogs.com/dgwylj/p/18402600

最近在上传文件时遇到了一些问题:
一、使用pyautogui
①、使用pyautogui模拟在windows弹窗中输入文件路径,因系统输入法默认为中文,导致上传失败
②、后来修改代码,在每次输入文件路径之前,先用热键将输入法切换为英文,然而稳定性不高

        import timetry:self.click(locator)time.sleep(2)pyautogui.hotkey('shift')  # 切换输入法为英文pyautogui.typewrite(file)  # 在win窗口中输入文件路径pyautogui.press(keys='enter', presses=1)  # 点击确定,一次except:raise Exception

二、使用win32com
①、不稳定,本质上还是因系统输入法默认为中文,导致上传失败

import timetry:self.click(locator)time.sleep(2)# 创建 WScript.Shell 对象,用于模拟键盘输入shell = win32com.client.Dispatch("WScript.Shell")# 发送文件路径和两次回车键,因为中文的问题shell.SendKeys(file + "{ENTER}" + "{ENTER}")time.sleep(2)except Exception as e:raise Exception(f'Failed to upload file:{e}')

以上代码的不稳定性,导致测试结果不真实,想起如果直接copy+paste的方式应该可以解决问题,经多次验证没有失败的,很稳。
需要注意的是file要使用原路径时要转义,如:D:\code\123.img

    def upload_file_by_pyauto(self, locator, file):"""使用pyautogui上传单个文件"""import pyperclipimport timetry:self.click(locator)time.sleep(2)pyperclip.copy(file)pyautogui.hotkey('ctrl', 'v')pyautogui.press(keys='enter', presses=1)  # 点击确定,一次except:raise Exception

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

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

相关文章

C# kvaser can 通讯

1、查看官方文档https://kvaser.com/canlib-webhelp/section_install_windows.html 2、安装can windows驱动 https://www.kvaser.com/downloads-kvaser/?utm_source=software&utm_ean=7330130980013&utm_status=latest 3、安装canlib https://www.kvaser.com/downloa…

Cursor一键导入vscode插件以及设置

在cursor中找到 setting-- general -- vscode import 导入配置,一键导入即可

时间序列结构变化分析:Python实现时间序列变化点检测

平稳性是时间序列分析与预测的核心概念。在平稳条件下,时间序列的统计特性(如均值)在时间维度上保持不变,仅存在随机波动。 但是实际数据集中很少观察到完全的平稳性。时间序列通常会经历结构性断裂或变化。这些变化会引入非平稳性,从而改变时间序列的整体分布,这些标志着…

RuoYi框架部分历史漏洞

RuoYi框架部分历史漏洞 生产环境搭建(代码审计)项目地址:若依 (y_project) - Gitee.com 官方文档:RuoYi项目构成 因为RuoYi框架是基于SpringBoot搭建的,所以我们启动项目时不用像SpringMVC那样去配置我们的服务器然后把项目放到服务器上启动。我们成功导入项目之后会生成一些…

ROS话题通信和服务通信的区别

话题和服务是 ROS 中使用最多的通信方法,它们之间有很多不同之处:

分治

由 ryz 讲解 什么是分治?把一个较大规模的问题分成若干个较小规模的问题。小规模的问题与原问题不同(根号分治)小规模的问题与原问题相同(对数分治)二分就是一种对数分治的方法。 操作序列分治 cdq 分治 修改和询问的整体分治也被称为 cdq 分治。 要求:修改对询问具有可加…

Docker 镜像的发布过程

搭建了一个镜像后(例如搭建好了一个开发环境),如果想要供其他人使用,此时就可以发布镜像到镜像仓库。本文就试着将本地的镜像,发布到阿里云。搭建了一个镜像后(例如搭建好了一个开发环境),如果想要供其他人使用,此时就可以发布镜像到镜像仓库。 本文就试着将本地的镜像…

VI源的基本概念

V/I源的基本概念 1.1 基本概念 通用直流电压电流源是一种线性电源,也称为四象限可编程电压电流源,主要用于各种自动测试设备(Automated Test Equipment,ATE)或自动测试系统(Automatic Test System, ATS),英文名称为Voltage/Current Source(V/I Source),在本书中简称…

Swagger/OpenAPI Client Generator for Delphi and FPC

Delphi和FPC的Swagger/OpenAPI客户端生成器 Swagger/OpenAPI Client Generator for Delphi and FPC Swagger/OpenAPI 是一种用于描述和定义RESTful API的规范和工具集。具体来说,它们提供了以下关键特性和作用: 一、定义与背景Swagger :最初是一种用于描述RESTful API的规范…

数据包格式

近来常思,不应止步于此,可自觉进阶缓慢,一筹莫展,就打算自废武功复习一下,那就从状态码开始吧。前言近来常思,不应止步于此,可自觉进阶缓慢,一筹莫展,就打算自废武功复习一下,那就从状态码开始吧。 由于强迫症患者,所以后面就顺便把数据包格式啥的都一起写一下吧。请…