Selenium系列(十一) - 针对两种上传文件方式的实现方案

如果你还想从头学起Selenium,可以看看这个系列的文章哦!

https://www.cnblogs.com/poloyy/category/1680176.html

其次,如果你不懂前端基础知识,需要自己去补充哦,博主暂时没有总结(虽然我也会,所以我学selenium就不用复习前端了哈哈哈...)

首先,将下面html代码保存到一个文件中

后续第一种上传文件方式的代码小案例都是访问此html的

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
      <input type="file" name="pic" id="pic" />
</body>
</html>

方式一:input标签上传文件

比较简单,可以定位input标签后,直接 .send_keys() 就可以了

# !/usr/bin/env python
# -*- coding: utf-8 -*-

"""
__title__  =
__Time__   = 2020/3/25 17:52
__Author__ = 小菠萝测试笔记
__Blog__   = https://www.cnblogs.com/poloyy/
"""
from selenium import webdriver

driver = webdriver.Chrome("../resources/chromedriver.exe")

# 需要自己修改路径
driver.get("file:///C://上传文件.html")
driver.maximize_window()

# 定位上传文件元素input[type=file]
pic = driver.find_element_by_id("pic")

# 上传文件
pic.send_keys(r"C:/上传文件.html")

方式二:非input标签上传文件

# 打开上传网站
driver.get("https://tinypng.com/")
paths = Path.cwd().parent

# 触发文件上传的操作
driver.find_element_by_css_selector("section.target").click()

time.sleep(2)
# 一级顶层窗口
dialog = win32gui.FindWindow("#32770", "打开")

# 二级窗口
comboBoxEx32 = win32gui.FindWindowEx(dialog, 0, "ComboBoxEx32", None)

# 三级窗口
comboBox = win32gui.FindWindowEx(comboBoxEx32, 0, "ComboBox", None)

# 四级窗口 -- 文件路径输入区域
edit = win32gui.FindWindowEx(comboBox, 0, "Edit", None)

# 二级窗口 -- 打开按钮
button = win32gui.FindWindowEx(dialog, 0, "Button", None)

# 1、输入文件路径
filepath = f"{paths}\\resources\\11.png"
win32gui.SendMessage(edit, win32con.WM_SETTEXT, None, filepath)

# 2、点击打开按钮
win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button)

这个是写死的方法,直接照搬即可,因为涉及了第三方工具去定位Window元素,暂时不展开详解

原文地址:https://www.cnblogs.com/poloyy/p/12607930.html

时间: 2024-10-05 07:39:37

Selenium系列(十一) - 针对两种上传文件方式的实现方案的相关文章

ASP.NET MVC,文件的两种上传方式

文件类型可以更换,在后台保存的时候更换下保存格式@*视图*@<div id="checkQuestionnaireAdd">    <form id="editform">        <input id="id" type="hidden" name="id" value="0" />        <table class="t1

简述三种异步上传文件方式

 很久没写过博客了! 上次写已经是去年的12月了,离现在也有足足三个月了.这几个月因为要搭建个人网站以及准备个人简历,包括最近要准备最近的各大公司的实习春招,很难抽时间来写博客,这次的异步文件上传我觉得是很有必要了解的,笼络了很多知识点,因此准备写一篇博客来巩固下. 异步上传文件是为了更好的用户体验,是每个前端必须掌握的技能.这里我提出三点有关异步文件上传的方式. 使用第三方控件,如Flash,ActiveX等浏览器插件上传. 使用隐藏的iframe模拟异步上传. 使用XMLHttpReques

三种上传文件不刷新页面的方法讨论:iframe/FormData/FileReader

发请求有两种方式,一种是用ajax,另一种是用form提交,默认的form提交如果不做处理的话,会使页面重定向.以一个简单的demo做说明: html如下所示,请求的路径action为"upload",其它的不做任何处理: <form method="POST" action="upload" enctype="multipart/form-data"> 名字 <input type="text&q

Linux 几种上传文件到linux服务的方法

Linux下几种文件传输命令 sz rz sftp scp 最近在部署系统时接触了一些文件传输命令,分别做一下简单记录: 1.sftp Secure Ftp 是一个基于SSH安全协议的文件传输管理工具.由于它是基于SSH的,会在传输过程中对用户的密码.数据等敏感信息进行加密,因此可以有效的防止用户信息在传输的过程中被窃取,比FTP有更高的安全性.在功能方面与FTP很类似,不仅可以传输文件数据,而且可以进行远程的文件管理(如建立,删除,查看文件列表等操作).Sftp与ftp虽然只有一字之差,但基于

katalon系列十二:自动化上传文件、下载文件

一.下载文件1.下载文件时,需要先设置好Chrome/Firefox下载路径.不弹出下载框等,大家先学习下在selenium下如何设置:https://www.cnblogs.com/fnng/p/7700620.html 在Katalon中设置Chrome的DesiredCapabilities如图: 点击菜单Edit-Desired Capabilities-Web UI-Chrome,点击Add,名称输入prefs,类型选Dictionary,Value如下:profile.default

跨服务器上传文件方式

跨服务器上传文件的方式有很多,其中一种是使用在中间服务器上使用临时文件的方式进行保存后再发送到另一个服务器上,实现文件上传. 问题点:中间保存临时文件,还需要不定时的进行文件清理,比较麻烦 直接进行文件的转发,使用byte[]数组方式直接进行文件转发,然后,服务器根据传递的byte[]数组进行转文件方式,使用httpclient方式将byte[]数组发送到服务端,特别注意的点在于, 发送的时候使用"content-type" = "application/json"

selenium python (十四)上传文件的处理

#!/usr/bin/python# -*- coding: utf-8 -*-__author__ = 'zuoanvip' #上传过程一般要打开一个系统的windows窗口,从窗口选择本地文件添加.所以一般会卡在如何操作本地window窗口.解决的方法很简单,只需要定位到上传按钮,然后通过send_keys添加本地文件路径即可from selenium import webdriverimport  osimport time driver = webdriver.Firefox() #打开

Selenium上传文件方法总结

Web上本地上传图片,弹出的框Selenium是无法识别的,也就是说,selenium本身没有直接的方法去实现上传本地文件,这里总结了两种上传文件的方式. 一.利用Robot类处理文件上传. 其大致流程可以为: 1. 利用selenium点击web上本地文件的上传按钮: 2. 在弹出的弹框中,文件路径输入框默认的是光标的聚焦,将文件在磁盘上的路径通过拷贝和黏贴的方法写上去. 3. 通过按下回车,默认触发弹框的确定按钮,完成文件上传的功能. 这里以百度首页的利用图片搜索为例: 打开百度首页,搜索按

springmvc上传文件方法及注意事项

本文基于注解的配置,敬请留意  基于注解整合 一.springmvc为我们提供两种上传方式配置: 1)org.springframework.web.multipart.commons.CommonsMultipartResolver (基于commons-fileupload.jar) 2) org.springframework.web.multipart.support.StandardServletMultipartResolver (基于servlet3.0+) 二.配置方式基于com