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

UI文件上传

1、文件上传:文件上传是自动化中比较麻烦棘手的部分。

有些场景我们需要上传本地文件到项目里。这种比较麻烦,因为需要点开文件上传的窗口后,打开的是windows的文件选择窗口,
而selenium是无法操作这个窗口的。 selenium只能操作html网页。
针对这种上传文件的场景,我们分两种情况来处理:
场景1、上传文件的元素是是input标签 ,并且type属性为file的情况下:
这种比较方便,直接send_keys这个文件的路径就可以了。
场景2、 不是input输入框,点击弹出系统的选择文件的窗口这种 需要借助第三方库实现:- PC 应用程序自动化工

通过系统工具实现自动化测试:windows系统自动化测试工具 :pyautogui,AutoIT,Pywinauto。
Pywinauto:只支持windows,Mac和linux不支持,而且不稳定,支持多文件上传,兼容性问题较多;
AutoIT: 兼容性好,并且更加稳定。跨平台支持,但是操作略微麻烦。
pyautogui:跨平台支持:windows、linux、mac,只支持单文件上传,操作也比较简单。
第三方库: pip install pyautogui

通过系统工具实现自动化测试的缺点:
1、不太稳定,兼容性比较差
2、不能同时以其他的任务在执行 – 上传的时候过程 鼠标不能操作
所以尽量优先用send_keys 不能用 再用系统工具。【input】

# input
import timefrom selenium.webdriver.support.ui import Select
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
driver.maximize_window()
driver.get('file:///D:/Project/python_ui01/upload_demo.html')
# 先找到下拉框的元素
ele = driver.find_element(By.ID,"fu")
ele.send_keys(r"D:\download\de6aa5a1745e84de4d43f15ab284b3ca.jpg")
time.sleep(3)
driver.quit()
# 非input
"""
我们学习pyautogui工具,使用的步骤:
* 1)在打开对话框中填写要上传的文件路径: pyautogui.write(r'D:\fk88.png') ,选择要上传的文件 【write不支持中文】
* 2)点击打开按钮-按下回车按钮:pyautogui.press('enter', presses=2) ,库可能有bug,所以尽量点击2次 确保万无一失* 注意:默认文件路径不能有中文: 有中文 直接使用会报错。* 支持中文的做法:先去复制路径->粘贴;
* 但是pyautogui不支持复制操作,所以需要借助 另外一个库:pyperclip,内置库 直接导入即可 :import pyperclip
* 通过热键粘贴路径
* 然后再点击回车按钮确认上传"""
import pyautogui
import pyperclip
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.keys import Keys
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By# 百度案例
driver = webdriver.Chrome()
driver.get('https://caesium.app/')
driver.maximize_window()
#点击浏览按钮 打开windows窗口
driver.find_element(By.XPATH,'//button[contains(text(),"浏览")]').click()
sleep(2)
# 确认上传的窗口弹出来之后 再复制文件路径 最好加一个等待操作#使用pyautogui工具进行write press
# # 第一步: write
pyautogui.write(r"D:\download\de6aa5a1745e84de4d43f15ab284b3ca.jpg")
# # 第二步: 点击打开按钮-按下回车按钮
pyautogui.press('enter', presses=2)
sleep(4)
driver.quit()
http://www.xdnf.cn/news/30331.html

相关文章:

  • 深入解析进程与线程:区别、联系及Java实现
  • 设计模式-桥接模式
  • 14.解码器的Mask
  • End-to-End从混沌到秩序:基于LLM的Pipeline将非结构化数据转化为知识图谱
  • 从GET到POST:HTTP请求的攻防实战与CTF挑战解析
  • EF Core中动态加载关联的导航属性
  • 直线轴承的正确安装方式是什么?
  • LeetCode 热题 100_乘积最大子数组(88_152_中等_C++)(动态规划)
  • 虚拟现实(VR)技术在教育领域的创新应用
  • QML中的3D功能--入门开发
  • Chat2DB创始人姬朋飞:AI在 text2sql应用领域的实践
  • Java从入门到“放弃”(精通)之旅——数组的定义与使用⑥
  • 进程程序替换
  • 【橘子大模型】初探rag知识库的构建
  • Linux基础IO(八)之硬链接
  • 完整游戏排行榜系统实现
  • Redux Promise 中间件
  • C++ 数组 array ™实现动画效果全解析⚡YQW · Studio ⚡
  • Http基础
  • QML中的3D功能--自定义着色器开发
  • 硬件操作指南——ATK-MD0430 V20
  • 什么是超类实体和派生属性
  • JavaScript 变量语法扩展
  • C 语言联合与枚举:自定义类型的核心解析
  • Scade 语言词法介绍
  • 游戏引擎学习第235天:在 Windows 上初始化 OpenGL
  • 4N60-ASEMI开关电源与适配器专用4N60
  • 6.7 ChatGPT自动生成定时任务脚本:Python与Cron双方案实战指南
  • android测试依赖
  • Python番外——常用的包功能讲解和分类组合