selenium UI自动化中文件上传的两种方式

news2024/10/6 20:36:23

前言

文件上传是自动化中很常见的一个功能,那么对于文件上传你又有多少了解呢?请往下看

1、被测产品中文件上传的功能非常普遍,一般情况下需要将准备好的文件放在预定的路径下,然后在自动化测试的脚本中,去预置的路径下获取文件即可。

2、selenium UI自动化中文件上传的两种方式:

①被测产品的UI界面中存在可输入文件路径的input输入框(该input框元素可能是可见元素,也有可能是隐藏元素),可以通过 send_keys('文件路径') 函数。

②被测产品是采用调用本地Windows文件系统窗口的方式进行文件上传。(该方式进行文件上传时,selenium工具无能为力。selenium工具是通过发送js脚本来驱动浏览器,而Windows系统窗口就完全不在Selenium的能力范围内),调用windows操作系统的UI自动化框架。

3、当被测产品与Windows系统进行交互时,就需要使用C端自动化的相关框架,这类框架有很多选择,此次选择的是PyAutoGUI。

详解

一、通过send_keys方法(该方法只适用于input标签)

1、查看上传按钮的元素标签为input标签,调用 send_keys() 方法传入文件路径即可,无需模拟弹出windows选择框且选择文件的过程。

2、通过该方法可以简单、高效的实现选择文件的目的,避免将处理思路卡在如何选择文件这个问题上。

3、文件上传的input框实现方式如下:

4、selenium UI自动化代码如下:

from selenium import webdriver
import time
 
driver = webdriver.Chrome()
driver.get('http://sahitest.com/demo/php/fileUpload.htm')
driver.implicitly_wait(10)
 
driver.find_element_by_css_selector('form>#file').send_keys(r'C:\Users\Administrator\Desktop\1.txt')
driver.find_element_by_css_selector('form>input[type="submit"]').click()
 
time.sleep(3)
driver.quit()

 

二、PyAutoGUI上传文件方式

pyautogui为第三方包,需要 pip install pyautogui 进行安装后,在脚本中 import 导入即可使用。

实例如下:

import time,pyautogui
 
def uploadWinFile(self,filepath):
    '''
    通过Windows系统上传文件
    '''
    try:
        pyautogui.write(filepath) # 输入文件绝对路径
        time.sleep(2) 
        pyautogui.press('enter',2) # 按2次回车键(按2次是为了防止出错)
    except Exception as e:
        loggerHandler.logger.error(e)
        e.args = ('上传文件操作异常',)
        raise e
    else:
        return filepath

三、AutoIt方式处理上传文件

https://blog.csdn.net/hwijew/article/details/122689835

四、pywin32库,识别对话框句柄,进而操作

五、SendKeys库,不稳定,不推荐

六、keybd_event,跟2类似,不过是模拟按键,ctrl+a,ctrl+c, ctrl+v…

多文件上传

1、多文件上传就是在文件路径框里用引号括起单个路径,然后用空格隔开多个路径。例如: “D:\a.txt” “D:\b.txt” 

注意:在多文件上传时,只有多个文件在同一路径下,才可以这样使用。例如: “C:\a.txt” “D:\b.txt” 该格式不对,不能实现多文件上传。

2、多文件上传原理

 

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取  

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

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

相关文章

国内可以免费使用的GPT

一、wetab新标签页 教程:https://diwlwltzssn.feishu.cn/docx/MnHhdvxATomBnMxfas2cm8wWnVd 装GPT界面:https://microsoftedge.microsoft.com/addons/detail/wetab%E5%85%8D%E8%B4%B9chatgpt%E6%96%B0%E6%A0%87%E7%AD%BE%E9%A1%B5/bpelnogcookhocnaokfp…

TeX Live和TeX studio安装

最近想要研究一下Letex怎么写论文,然后就查阅资料了解了一下,先安装上两个软件,怎么用在研究研究,这里记录一下软件安装过程,方便以后查阅。 TeX Live和TeX studio安装 Latex介绍TexLive安装下载TexLive的安装包安装Te…

C++知识第三篇之继承

C继承 继承是面向对象编程的重要特征,是对类设计层次的复用 文章目录 C继承一.介绍1.继承定义2.继承方式3.class与struct 二.作用域1.成员变量2.成员函数 三.赋值转换1.给基类对象赋值2.给基类对象指针赋值 四.派生类的默认函数五. 其他1.友元2.静态 六.继承1.单继承…

Android车载学习笔记1——车载整体系统简介

一、汽车操作系统 汽车操作系统包括安全车载操作系统、智能驾驶操作系统和智能座舱操作系统。 1. 安全车载操作系统 安全车载操作系统主要面向经典车辆控制领域,如动力系统、底盘系统和车身系统等,该类操作系统对实时性和安全性要求极高,生态…

VCSA 和ESXi 6.7.0版本升级

1. VCSA升级步骤 1)指定升级包的位置 software-packages stage --iso (如果是从vmware下载补丁,使用CD/DVD来映射ISO映像) 或 software-packages stage --url https://vapp-updates.vmware.com/vai-catalog/valm/vmw/8d167796-34d5-4899-be0a-6daade400…

Yolov8涨点神器:注意力机制---多头上下文集成(Context Aggregation)的广义构建模块,助力小目标检测,暴力涨点

🏆🏆🏆🏆🏆🏆Yolov8魔术师🏆🏆🏆🏆🏆🏆 ✨✨✨魔改网络、复现前沿论文,组合优化创新 🚀🚀🚀小目标、遮挡物、难样本性能提升 🍉🍉🍉定期更新不同数据集涨点情况 2.Context Aggregation介绍 论文:https://arxiv.org/abs/2106.01401 仅…

落地页设计的营销心理学(二)

作为一个营销落地页的设计者,最关注的问题:怎么样设计才能让我的落地页有转化? 当然这可能有很多影响因素。但是,你有没有想过在用户打开落地页时,运用心理学概念留住他们,促使他们完成留资、下载、购买等动…

听我一句劝,不要去外包,干了三年,废了....

先说一下自己的情况,大专生,18年通过校招进入湖南某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

Python实战基础12-闭包

1、函数的嵌套调用 def testB():print(-------testB start------)print(这里是testB函数执行的代码……)print(-------testB end ------)def testA():print(-----testA start-----)testB()print(-----testA end------) testA() 运行结果: 总结: 一个函…

PoseiSwap 参赛,参与斯坦福、Nautilus等联合主办的 Hackathon 活动

近日,由 Stanford Blockchain Accelerator、Zebec Protocol、 Nautilus Chain、Rootz Lab 共同主办的“ Boundless Hackathon Stanford ” 主题的黑客松活动,目前已接受报名。该活动旨在帮助更多的优质开发者参与到 Web3 世界的发展中,推动链…

顶满,阿里P8架构师独家分享的微服务实战笔记

微服务简介 简而言之,微服务架构风格是一种将单个应用程序开发为“一套小型服务”的方法,每个服务“运行在自己的进程中”,并通过轻量级机制(通常是HTTP资源API)进行通信。这些服务“围绕业务功能构建”,并通过全自动部署机制“独…

Cortex-M0的内核架构

目录 Cortex-M 系列产品线 Cortex-M0结构框图 Cortex-M0特性 Cortex-M0工作模式 Cortex-M0工作状态 Cortex-M0的寄存器 Cortex-M0的中断和异常 Cortex-M0的指令集 Cortex-M 系列产品线 Cortex-M系列是由ARM(Advanced RISC Machines)开发的一系列…

宁德时代,冷暖自知口难言

作者 | 魏启扬 来源 | 洞见新研社 发布可以“上天”的凝聚态电池、落地能量密度160Wh/kg的钠离子电池、量产系统集成度全球最高的麒麟电池…… 宁德时代在上海车展前后密集发声,坚决捍卫着“宁王”的冠冕。 如果再结合不久前的2022年年报,全年307亿的…

六级备考23天|CET-6|写作技巧1|开头段模版

目录 1 考前注意事项 2 真题参考 3 六级作文三段式 第一段 第二段 第三段 4 名言解释型作文 5 开头段的模版 why 型 6 选择型开头模版 7 国内学校/出国读书 8 团队精神和交流 9 作业 10 抽象意志品质类开头 ​ 11 信任的重要性​ 1 考前注意事项 定位错误 常识干扰 拼凑…

【必读】解密Redis主从同步问题,避免数据不一致!

大家好,我是小米,一个热爱技术的程序员。今天,我要和大家聊一聊Redis中常见的一个问题——主从不一致。作为一款高性能的键值存储系统,Redis主从架构在分布式场景中被广泛应用。然而,由于Redis的特性以及配置不当等原因…

大内存分页用在什么场景下?

此内容可以作为你积累高并发处理技能的一个小小的组成部分。挖掘虚拟内存和内存管理单元更底层的工作原理,以及了解转置检测缓冲区(TLB)的作用。 了解如何通过内存,提升你的程序性能。什么情况下使用大内存分页? 这道…

【四】设计模式~~~创建型模式~~~建造者模式(Java)

【学习难度:★★★★☆,使用频率:★★☆☆☆】 4.1. 模式动机 无论是在现实世界中还是在软件系统中,都存在一些复杂的对象,它们拥有多个组成部分,如汽车,它包括车轮、方向盘、发送机等各种部件…

【Web服务器集群】企业化架构部署

文章目录 前言一、LMAP架构介绍1.概念2.LAMP构建顺序3.LAMP编译安装4.各组件介绍4.1 Linux4.2 Apache4.3 MySQL4.4 PHP/Perl/Python 二、服务器部署1.Apache部署2.MySQL部署3.PHP部署4.安装论坛 前言 LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整…

案例分享 | 纽扣电池石墨片厚度及缺陷检测

石墨片是一种导热散热材料,质轻柔软,能够轻松贴合在各种热源点,在新能源、航天、3C电子等领域应用广泛。 汽车钥匙中的纽扣电池也需要使用石墨片,石墨片会有统一的厚度标准,装配过程中表面不可避免地会出现裂纹、划痕…

数据结构与算法—排序算法篇

目录 1、选择排序 1.1、算法思想 1.2、步骤 1.3、算法实现 1.4、算法分析 2、 冒泡排序 2.1、算法思想 2.2、算法实现 2.3、算法分析 2.4、改进冒泡排序 3、插入排序 3.1、算法思想 3.2、算法实现 3.3、算法分析 4、希尔排序 4.1、算法思想 4.2、增长量选定规…