web_UI自动化中如何解决上传文件的问题

在web_ui自动化中,经常会碰到要上传文件的功能

一般页面上有两种上传文件方式:

1.直接在页面输入路径

对于这种,只需要通过selenium定位后,直接使用send_keys(文件路径)输入路径即可

from selenium import webdriver
 
driver = webdriver.Chrome()
 
driver.get("http://xxxx")
driver.maximize_window()
 
# 定位上传文件元素
input_file = driver.find_element_by_id("xxx")
 
# 上传文件
input_file.send_keys(r"D:\learn\xx.txt")

2.会弹出电脑本地的文件系统,在本地文件中找到文件后,进行传入

对于这种情况,本文章主要就这个问题来进行解决

解决问题的思路:

1.借助第三方工具pyautogui,用程序自动控制鼠标和键盘操作

2.在打开的系统窗口中,借助pyautogui,输入文件路径

3.点击enter,将文件进行上传

pyautogui是一个纯Python的GUI自动化工具,其目的是可以用程序自动控制鼠标和键盘操作,并且支持多平台(Windows,OS X,Linux)。强烈推荐!

具体操作步骤:

1.安装模块: pip install pyautogui

2.将要上传的文件路径写入到文件名的输入框内;

3.敲回车,相当于点击【打开】按钮,注意回车presses要2次才能生效。

import os
import time
import pyautogui as ui
from selenium import webdriver
 
driver = webdriver.Chrome()
driver.implicitly_wait(20)      # 隐式等待
dir = os.getcwd()
html_dir = os.path.join(dir, 'demo.html')
driver.get(html_dir)
 
file_elem = driver.find_element_by_name('mfile')
file_elem.click()
 
# 系统之间要等待
time.sleep(1)
try:
    while True:
        x,y=ui.position() #返回鼠标的坐标
        print('position:(%s,%s)' %(x,y)) #打印坐标
        time.sleep(1)
        #每隔1s打印一次,并执行清屏
        os.system('cls')
expect KeyboardInterrupt:
    print('end')
 
file_dir = os.path.join(dir, 'test.txt')	# 要上传的文件路径
# 写入文件
ui.typewrite(file_dir)	# 直接调用写入
time.sleep(0.5)
# 输入回车键, presses表示按的次数,按一次不会生效,有可能是执行太快,建议presses=2
ui.press('enter', presses=2)
time.sleep(2)
 
driver.quit()

注意:在每步操作都要有足够的等待

参考:Python利用PyAutoGUI轻松搞定图片上传_python_脚本之家

Python,如果你需要对网页或桌面应用程序图片上传功能进行UI自动化测试,可以考虑使用一些专门用于Web或GUI测试的库,如Selenium、PyAutoGUI或者是Robot Framework的WebElement库配合截图比较工具(比如PIL或OpenCV)。 1. Selenium是一个流行的浏览器自动化测试框架,它支持多种浏览器,并能模拟用户操作,包括点击“上传”按钮以及选择文件。你可以编写Python脚本,定位到上传图片的元素(如`<input type="file">`),然后触发它的点击事件,引导用户选择图片。 ```python from selenium.webdriver import ActionChains from selenium.webdriver.common.keys import Keys # ...先打开页面... action = ActionChains(driver) action.send_keys("/path/to/image.jpg") # 这里替换为实际图片路径 action.click().perform() ``` 2. PyAutoGUI是一个跨平台的自动化工具包,它可以获取屏幕截图并与预期图像进行比较。你可以在找到图片上传控件之后,直接使用它来模拟鼠标点击和文件选择。 ```python import pyautogui # ...定位到上传按钮... pyautogui.click(按钮坐标) # ...等待用户选择文件... pyautogui.typewrite('/path/to/image.jpg', interval=0.1) # 写入图片路径 pyautogui.press('enter') ``` 3. 如果是Windows应用,可以考虑使用Appium或Uiautomator等针对移动或桌面应用的测试工具,它们也提供类似的操作。 在做这类测试时,一定要记住,实际的代码会依赖于目标应用的具体HTML结构、控件位置和识别方式,所以你需要首先了解这些信息,然后才能编写准确的测试脚本。同时,要注意处理可能的异常情况,比如网络延迟、元素不可见等问题
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值