上传操作分为两种情况:

1、input标签上传

如果是input可以直接输入路径的,那么直接调用send_keys输入路径,和前边的元素操作类似,在这里不再过多的赘述。

2、非input标签上传

非input标签上传的,则需要借助第三方的工具:

这里我们用python中的第三方库pywin32库,识别对话框句柄,进而进行上传操作

首先安装第三方库:pip install pywin32

借助winspy来辅助定位,winspy下载地址:https://sourceforge.net/projects/winspyex/

winspy工具使用的是绝对定位,和selenium中的元素定位方式不同

通过借助winspy工具定位出了对应元素的路径,就可以通过pywin32库来实现上传操作啦!

1、filePath是上传文件所在的绝对路径

2、如果你的浏览器是谷歌那么不用管,如果是其他的浏览器,看你弹出上传窗口的左上角的名字是什么,写入到else里的title=" "里边。

3、遇到Windows窗口上传的元素定位时,直接调用这个方法就可以:upload(C:\文件上传.txt)

比如火狐浏览器与谷歌不同,它的title="文件上传"

import win32gui
import win32con def upload(filePath, browser_type="chrome"):
'''
通过pywin32模块实现文件上传的操作
:param filePath: 文件的绝对路径
:param browser_type: 浏览器类型(默认值为chrome)
:return:
'''
if browser_type == "chrome":
title = "打开"
else:
title = "" # 这里根据不同浏览器类型来修改 # 找元素
# 一级窗口"#32770","打开"
dialog = win32gui.FindWindow("#32770", title)
# 向下传递
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', "打开(&O)") # 二级 # 输入文件的绝对路径,点击“打开”按钮
win32gui.SendMessage(edit, win32con.WM_SETTEXT, None, filePath) # 发送文件路径
win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button) # 点击打开按钮

selenium中元素操作之上传操作(六)的更多相关文章

  1. [python爬虫] Selenium常见元素定位方法和操作的学习介绍(转载)

    转载地址:[python爬虫] Selenium常见元素定位方法和操作的学习介绍 一. 定位元素方法 官网地址:http://selenium-python.readthedocs.org/locat ...

  2. 【基础】selenium中元素定位的常用方法(三)

    一.Selenium中元素定位共有八种 id name className tagName linkText partialLinkText xpath cssSelector 其中前六种都比较简单, ...

  3. selenium中元素操作之浏览器窗口滚动&网页日期控件操作(js操作)(五)

    js的滚动条scrollIntoView() Arguments[] - python与js之间的羁绊 1.移动到元素element对象的“底端”,与当前窗口的“底部”对齐: driver.execu ...

  4. [python爬虫] Selenium常见元素定位方法和操作的学习介绍

    这篇文章主要Selenium+Python自动测试或爬虫中的常见定位方法.鼠标操作.键盘操作介绍,希望该篇基础性文章对你有所帮助,如果有错误或不足之处,请海涵~同时CSDN总是屏蔽这篇文章,再加上最近 ...

  5. Selenium常见元素定位方法和操作的学习介绍

    参考地址: https://www.cnblogs.com/eastmount/p/4810690.html 这篇文章主要Selenium+Python自动测试或爬虫中的常见定位方法.鼠标操作.键盘操 ...

  6. 基于python的selenium两种文件上传操作

    方法一.input标签上传     如果是input标签,可以直接输入路径,那么可以直接调用send_keys输入路径,这里不做过多赘述,前文有相关操作方法. 方法二.非input标签上传 这种上传方 ...

  7. FTP文件操作之上传文件

    上传文件是一个比较常用的功能,前段时间就做了一个上传图片的模块.开始采用的是共享文件夹的方式,后来发现这种方法不太好.于是果断将其毙掉,后来选择采用FTP的方式进行上传.个人感觉FTP的方式还是比较好 ...

  8. git操作之上传gitthub

    push 失败解决方法: 分支操作: 分支操作之覆盖: 主master操作:

  9. selenium中元素操作之简单的鼠标、键盘操作(三)

    1.鼠标操作导入类:ActionChains --鼠标的操作形成一连串的动作链,由selenium的ActionChains类来完成模拟鼠标操作手表操作的过程:1.鼠标的操作,先放到一个列表中2.利用 ...

随机推荐

  1. 【Tomcat】安装Tomcat服务器&Tomcat的目录结构

    创建时间:6.14 一.安装Tomcat服务器 Tomcat下载ver8的,现在用的多 下载并解压 配置环境变量:(切记!!不然startup那步会闪退) 1.新建系统环境变量: (1)进入根目录,复 ...

  2. AMD SATA Download (解决win10 磁盘占用100%问题)

    需要下载的AMD SATA 驱动: 下载AMD SATA https://github.com/StoneIsDeveloper/UsefulTools/blob/master/AMD%20SATA/ ...

  3. pymysql 增删改 查 索引

    pymysql 模块的使用 pip install pymysql username = input ("请输入用户") pwd = input ("请输入密码" ...

  4. 重新学习Spring注解——声明式事务

    36.声明式事务-环境搭建 37.声明式事务-测试成功 38.[源码]-声明式事务-源码分析 /** * 声明式事务: * * 环境搭建: * 1.导入相关依赖 * 数据源.数据库驱动.Spring- ...

  5. Sublime Text2中的快捷方式及html各种标签(待完善)

    快捷方式 1.xhtml+tab 2.自动补全标签 Alt + .  补全标签 标签 1.<p>段落标签 ,前后换行 <h1.2.3.4.5>标题标签 h1最大,一级标题 2. ...

  6. vue大文件上传组件选哪个好?

    需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制. 第一步: 前端修改 由于项目使用的是 ...

  7. 【luoguP1168】中位数

    题目链接 用一个大根堆和一个小根堆维护中位数即可 #include<iostream> #include<cstring> #include<cstdio> #in ...

  8. gethostbyaddr

    函数原型: #include<netdb.h> struct hostent * gethostbyaddr(const char *addr, socklen_t len, int fa ...

  9. JS 实现复制、全选文本

    先上效果,由于截图,高亮蓝色成了灰色 参考这位大佬的   https://www.cnblogs.com/dreambin/p/9046999.html HTML 部分 <form name=t ...

  10. 【视频开发】IR-CUT作用

    自然界存在着各种波长的光线,通过折射人眼能看到不同颜色的光线,这就是光线的波长不同所导致的.其实还有许多光线是人眼看不到的,人眼识别光线的波长范围在320nm-760nm之间,超过760nm的光线人眼 ...