python在selenium网页模拟运行过程中需要打开文件夹上传文件的情况的解决方法

本文介绍了在Selenium测试中遇到网页需要上传文件时,如何利用Pywinauto库模拟键盘操作,包括选择文件夹、输入文件名和点击打开的过程,适用于自动化测试场景,只需调整文件路径和文件名参数。
摘要由CSDN通过智能技术生成

在selenium运行过程中,可能会遇到网页需要上传文件图片等情况,有时可以直接用selenium中send_keys直接上传,但是有时不行,这时我们需要用到另一个包,pywinauto
具体的代码如下,

import pywinauto
# pywinauto模拟操作键盘,需要使用到 pywinauto.keyboard.send_keys这个方法
# 需要注意的是Pywinauto库的send_keys方法与selenium库的send_keys方法不同,输入的键盘操作关键字存在较大差异
from pywinauto.keyboard import send_keys
folder = 'xxxxx' #文件夹地址
file = 'xxxxx' #文件名
# 使用pywinautoc创建一个操作桌面窗口的对象
win1 = pywinauto.Desktop()
# 选择文件上传的窗口 窗口句柄默认为‘打开’
bow1 = win1['打开']
# 选择文件地址输入框,点击激活
bow1["Toolbar3"].click()
# 键盘输入上传文件的路径
send_keys(folder)
# 键盘输入回车,打开该路径
send_keys("{VK_RETURN}")
# 选中文件名输入框,输入文件名
bow1["文件名(&N):Edit"].type_keys(file)
# 点击打开
bow1["打开(&O)"].click()

运行情况是模拟手动点击上传按钮,在文件夹中选择文件。期间不能手动触碰鼠标键盘。
因为是在selenium模拟网页运行的代码中的,所以上面需要连接
web.find_element(By.XPATH,‘xxxxxxxxxxx’).click()等使用,
就是说,先用selenium模拟点击上传按钮,然后再使用上面的代码模拟上传文件。
代码中只需要修改folder和file,其他的不要动。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
你可以通过使用 SeleniumPython 来获取下载的文件名。首先,你需要设置浏览器的下载路径,确保文件下载时会保存到指定的位置。然后,你可以使用 Selenium 的相关方法模拟点击下载按钮或链接。接下来,你可以使用 Python 的文件操作函数来获取最新下载的文件名。 下面是一个示例代码: ```python from selenium import webdriver import os import time # 设置下载路径 download_path = "/path/to/download/folder" # 配置 Chrome 浏览器参数 chrome_options = webdriver.ChromeOptions() chrome_options.add_argument("--headless") # 无头模式,可选 chrome_options.add_argument("--disable-gpu") # 禁用 GPU 加速,可选 chrome_options.add_argument("--no-sandbox") # 解决 Linux 下运行问题,可选 chrome_options.add_argument("--disable-dev-shm-usage") # 解决 Linux 下运行问题,可选 chrome_options.add_argument("--disable-extensions") # 禁用扩展,可选 chrome_options.add_experimental_option("prefs", { "download.default_directory": download_path, "download.prompt_for_download": False, "download.directory_upgrade": True, "safebrowsing.enabled": True }) # 创建 Chrome 浏览器实例 driver = webdriver.Chrome(options=chrome_options) # 打开网页或执行其他操作 # 模拟点击下载按钮或链接 download_button = driver.find_element_by_id("download-button") download_button.click() # 等待一段时间,确保文件下载完成 time.sleep(5) # 获取最新下载的文件名 list_of_files = os.listdir(download_path) latest_file = max(list_of_files, key=os.path.getctime) # 打印文件名 print("最新下载的文件名:", latest_file) # 关闭浏览器 driver.quit() ``` 在上面的示例,你需要将 `download_path` 替换为你想要保存下载文件的路径。然后,你可以根据实际情况修改代码网页操作和元素定位部分。最后,通过 `os.listdir()` 函数获取下载文件的文件列表,并使用 `max()` 函数找到最新下载的文件名。 请注意,该代码示例使用的是 Chrome 浏览器和 ChromeDriver。如果你使用的是其他浏览器,需要相应地更改代码。此外,确保已安装正确版本的浏览器驱动程序,并将驱动程序的路径添加到系统环境变量

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

'Steven

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值