首页 > 其他分享 >selenium中解决非input标签上传文件时的一些问题

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

时间:2024-09-08 09:48:02浏览次数:8  
标签:pyautogui 文件 输入法 selenium file time input 上传

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

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

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

import time
        try:
            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 pyperclip
        import time
        try:
            self.click(locator)
            time.sleep(2)
            pyperclip.copy(file)
            pyautogui.hotkey('ctrl', 'v')
            pyautogui.press(keys='enter', presses=1)  # 点击确定,一次
        except:
            raise Exception

标签:pyautogui,文件,输入法,selenium,file,time,input,上传
From: https://www.cnblogs.com/dgwylj/p/18402600

相关文章

  • 「漏洞复现」全程云OA AttachFile/UploadFile 任意文件上传漏洞
    0x01 免责声明请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删除。本次测试仅供学习使用,如若非法他用,与平台和本文作者无关,需......
  • 远程下载上传命令(绕过大小限制)
    远程下载上传命令(绕过大小限制)python起http服务python3-mhttp.server5003python2-mSimpleHTTPServer5003上传时遇到限制上传大小时:编码base64:certutil-encodeyb.exe1.txt可以把1.txt拆成三个txt,分块上传后,再使用copyc:\*txtc:\123.txt//把c盘根目录下......
  • 富文本编辑器 实现CTRL+V粘贴图片并上传、WORD粘贴带图片
    编辑器:百度ueditor前端:vue2,vue3,vue-cli,html5需求:复制粘贴word内容图片,word图片转存交互要求:开源,免费,技术支持用户体验:Ctrl+V快捷键操作该说不说,最近这块应该也是挻火的,今天早上又有网友加我微信私聊,说是想了解一下这块的技术和方案。实际我的微信号之前就已经在网上......
  • 短视频程序源码,文件上传漏洞及防御方法
    短视频程序源码,文件上传漏洞及防御方法一、文件上传漏洞原理在短视频程序源码的文件上传的功能处,若服务端脚本语言未对上传的文件进行严格验证和过滤,导致恶意用户上传恶意的脚本文件时,就有可能获取执行服务端命令的能力,这就是文件上传漏洞。二、文件上传漏洞触发点相......
  • Selenium实现滑动滑块验证码验证
    你是否在自动化测试中被滑块验证码“挡住了去路”?随着反爬虫技术的普及,滑动滑块验证码越来越多地出现在各大网站,防止自动化脚本的访问。这给测试人员带来了新的挑战——如何让自动化测试程序通过这种验证?今天我们就来探讨使用Selenium实现滑动滑块验证码验证的技巧与实战方法。......
  • SpringBoot本地项目上传到服务器
    首次将本地springboot开发的项目上传到服务器,这里连接服务器操作系统是windowserver,特此记录流程以备不时之需。基本步骤:打包项目为jar包上传项目启动服务    1.本地测试无bug后,打开idea右侧maven面板,清空本地编译文件,在pom文件中设置导报方式为jar,重新打......
  • C# Selenium ChromeDriver下载文件提示"已阻止不安全的下载"
    Chrome浏览器下载文件会提示"已阻止不安全的下载",需要手动点击保留,用Selenium做自动化下载的话就卡住了,后面在stackoverflow找到了解决方案。options.AddArgument("--unsafely-treat-insecure-origin-as-secure=http://xxx.com");替换自己的域名,多域名可用逗号分隔。完整代码如......
  • Java I/O (Input/Output)——文件字节流
    JavaI/O简介    JavaI/O(输入/输出)是Java程序中用于处理数据输入和输出的重要部分。输入流(InputStreams):用于从数据源读取数据。常见的输入流包括FileInputStream(从文件读取)、BufferedInputStream(提高读取效率)等。输出流(OutputStreams):用于将数据写入到目的地。例如Fil......
  • Java中如何实现minio文件上传
    一、导入minio依赖这里还要导入lombok是因为在MinIOConfig类中使用了@Data注解,正常来说导入minio依赖就够了<dependency>   <groupId>io.minio</groupId>   <artifactId>minio</artifactId>   <version>7.1.0</version> </dependency><dependency......
  • [python][selenium] Web UI自动化页面切换iframe框架
    关联文章:WebUI自动化8种页面元素定位方式1、切换iframe的方法:switch_to.frame  方法的入参有4种:  1.1、id  1.2、name  1.3、index索引  1.4、iframe元素对象2、返回主文档(最外层的页面)的方法:switch_to.default_content()3、返回到上一级iframe的方法:switch_to.p......