当前位置: 首页 > 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()

相关文章:

  • AI与IT的共生
  • 小测验——已经能利用数据集里面的相机外参调整后看到渲染图像
  • 网页聊天系统项目
  • 谷歌新域名结构:Hreflang的未来展望
  • C++ 基于多设计模式下的同步异步⽇志系统-1准备工作
  • 闩锁效应(latch up)
  • bat脚本转换为EXE应用程序文件
  • systemctl管理指令
  • opencv 给图片和视频添加水印
  • MySQL运维三部曲初级篇:从零开始打造稳定高效的数据库环境
  • Dify快速入门之chatflow
  • Linux网络编程——基于ET模式下的Reactor
  • 【正则表达式】正则表达式使用总结
  • 如何在3090显卡上使用老版本torch
  • python 库 下载 ,整合在一个小程序 UIUIUI
  • LeetCode 239 滑动窗口最大值
  • 【机器学习】从炼丹到落地!模型部署与监控全流程实战指南 (MLOps 核心)
  • 【sylar-webserver】8 HOOK模块
  • Linux系统:进程终止的概念与相关接口函数(_exit,exit,atexit)
  • BT1120 BT656驱动相关代码示例
  • 3月赴美外国游客数量加速下滑
  • 甘肃古浪县发生3.0级地震,未接到人员伤亡和财产损失报告
  • 独家专访|苏童:《好天气》是一部献给中国郊区的作品
  • 云南昆明市副市长戴惠明已任市委常委、秘书长
  • 海南热带雨林国家公园核心保护区一水电站设施将拆除,曾被中央环保督察通报
  • 美国防部宣布整合驻叙美军部队,将减少至不足千人