当前位置:首页 > python > 正文内容

用python写个selenium上传文件的程序,非input标签的上传

zhangsir2年前 (2023-03-24)python161

非input标签的上传通常是通过模拟点击“上传”按钮打开系统的文件选择框,然后在文件选择框中选择文件并点击“确定”按钮实现的。在Selenium中,我们可以使用AutoIT或pywinauto等工具来模拟操作系统的窗口,实现非input标签的上传。


下面是一个使用pywinauto模块实现非input标签上传文件的示例程序:


from selenium import webdriver
from pywinauto.application import Application
from pywinauto.keyboard import send_keys
# 指定要上传的文件路径
file_path = r"C:\path\to\your\file.jpg"
# 创建WebDriver对象,这里使用Chrome浏览器作为示例
driver = webdriver.Chrome()
# 打开要上传文件的页面
driver.get("https://example.com/upload")
# 找到上传按钮并点击
upload_button = driver.find_element_by_xpath("//button[@class='upload-button']")
upload_button.click()
# 使用pywinauto模块模拟系统的文件选择框
app = Application(backend='uia').connect(title='打开')  # 打开系统的文件选择框
app['打开']['文件名(N):Edit'].set_text(file_path)  # 将要上传的文件路径填入文件名输入框
send_keys("{ENTER}")  # 模拟按下回车键,选择文件并点击“确定”按钮
# 等待上传完成
# ...
# 关闭浏览器
driver.quit()

在这个示例中,我们使用了pywinauto模块模拟了系统的文件选择框,找到了文件名输入框并将要上传的文件的路径填入该输入框,然后模拟按下回车键,选择文件并点击“确定”按钮完成文件的选择。请注意,要将C:\path\to\your\file.jpg替换为实际要上传的文件的路径。


上传完成后,您可以使用Selenium的等待功能等待页面中上传成功的提示信息出现,然后关闭浏览器

新实例:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from pywinauto.application import Application
from pywinauto.keyboard import send_keys
import time
# 指定要上传的文件路径
file_path = r"C:\Users\Administrator\Desktop\1\f69e1dd88b3e90726e4d6cee1baa709.jpg"
# 创建WebDriver对象,这里使用Chrome浏览器作为示例
driver = webdriver.Chrome()
# 打开要上传文件的页面
driver.get("https://layuion.com/docs/modules/upload.html")
# 等待上传按钮出现并点击
upload_button = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.ID, "test1"))
)
upload_button.click()
time.sleep(3)
# 使用pywinauto模块模拟系统的文件选择框
app = Application().connect(path="C:\Program Files\Google\Chrome\Application\chrome.exe")  # 打开系统的文件选择框
send_keys(file_path)# 将要上传的文件路径填入文件名输入框
time.sleep(3)
send_keys("{ENTER}")  # 模拟按下回车键,选择文件并点击“确定”按钮
# 等待上传完成
# ...
input('ok?')
# 关闭浏览器
driver.quit()


zhangsir版权g4防采集https://mianka.xyz

扫描二维码推送至手机访问。

版权声明:本文由zhangsir or zhangmaam发布,如需转载请注明出处。

本文链接:https://www.mianka.xyz/post/144.html

分享给朋友:

“用python写个selenium上传文件的程序,非input标签的上传” 的相关文章

Python爬虫xpath详解

一、xpath介绍xpath是一门在 XML 文档中查找信息的语言。最初是用来搜寻 XML 文档的,但同样适用于 HTML 文档的搜索。所以在做爬虫时完全可以使用 XPath 做相应的信息抽取。二、安装lxmllxml是Python的一个第三方解析库,支持HTML和XML解析,而且效率非常高,弥补了...

如何用python获取一个网页的所有连接

如何用python获取一个网页的所有连接很简单直接上代码:# -*- coding: utf-8 -*- ''' 如何用python获取一个网页的所有连接 author:zhangsir ''' imp...

pip安装三方库 国内的一些镜像站点推荐

pip 国内的一些镜像站点推荐镜像套路:使用cmd;输入命令pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名 即可开始安装。清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http...

python 多线程与多进程的代码实例

一.两者区别多进程和多线程的主要区别是:线程是进程的子集(部分),一个进程可能由多个线程组成。多进程的数据是分开的、共享复杂,需要用IPC;但同步简单。多线程共享进程数据,共享简单;但同步复杂。(1)多进程进程是程序在计算机上的一次执行活动,即正在运行中的应用程序,通常称为进程。当你运行一个程序,你...

python selenium 使用代理ip

代码如下:from selenium import webdriver chromeOptions = webdriver.ChromeOptions() chromeOptions.add_argument("--proxy-serv...

python 实现快速扣背景图功能

一,实现快速扣背景图需要rembg这个三方库#引入rembg库 from rembg import remove #素材 input_path = 'input.jpg' #效果 output_path =&nbs...