selenium 上传文件方法补充——SendKeys、win32gui
之前和大家说了input标签的上传文件的方式:
《selenium2 python 自动化测试实战》(13)——上传文件
现在好多网站上传的标签并不是input,而是div之类的比如:
全部都是div标签,这时候用上面的方法就不好用了。今天船长在大神的帮助下学会了两种方法,现在船长来教大家上传div这种标签的方式。
最方便的——SendKeys
大家只需要pip install SendKeys库,然后再代码里直接用就OK了,这里用大鱼号上传视频作为例子上代码:
注意,浏览器用的是火狐,因为chrome浏览器会不支持哦~
# coding: utf-8
from selenium import webdriver
from time import sleep
import SendKeys
# options = webdriver.ChromeOptions()
# options.add_argument('disable-infobars')
# d = webdriver.Chrome(chrome_options=options)
d = webdriver.Firefox()
d.get("https://mp.dayu.com")
# cookie登录,跳过验证码
d.add_cookie({'name': 'cna',
'value': 'fhSvgLVKF3Gz1',
'domain': '.dayu.com'})
d.add_cookie({'name': 'isg',
'value': 'BIaGbW7sWwBT6-_W8K5',
'domain': '.dayu.com'})
d.add_cookie({'domain': 'mp.dayu.com',
'name': 'USER_TMP',
'value': 'tuAaJfSa8AaxABk'})
sleep(3)
d.refresh()
sleep(2)
d.find_element_by_xpath("/html/body/div/div/div[1]/ul/li[2]/ul/li[2]/a/span").click()
sleep(5)
d.find_element_by_xpath('/html/body/div[1]/div[3]/div/div[2]/div/div/div/div/div[2]/div[1]/div[1]').click()
SendKeys.SendKeys(r'C:\Users\DELL\Desktop\vid.mp4')
sleep(2)
SendKeys.SendKeys("{ENTER}")
第二种方法:win32gui
这种方法有点麻烦,而且下载库的时候非常麻烦……
要安装
1、pywin32-218.win-amd64-py2.7.exe
2、pypiwin32
下载好这两个库以后,就可以上代码啦:
# coding: utf-8
import win32gui
import win32api
import win32con
from selenium import webdriver
from time import sleep
# options = webdriver.ChromeOptions()
# options.add_argument('disable-infobars')
# d = webdriver.Chrome(chrome_options=options)
d = webdriver.Firefox()
d.get("https://mp.dayu.com")
d.add_cookie({'name': 'cna',
'value': 'fhW6ElaKVKF3Gz1',
'domain': '.dayu.com'})
d.add_cookie({'name': 'isg',
'value': 'BIaGbW7sIPskIv6-_W8K5',
'domain': '.dayu.com'})
d.add_cookie({'domain': 'mp.dayu.com',
'name': 'USER_TMP',
'value': 'tuAaJfSaWoKiQutU9mIkyBk'})
sleep(3)
d.refresh()
sleep(2)
d.find_element_by_xpath("/html/body/div/div/div[1]/ul/li[2]/ul/li[2]/a/span").click()
sleep(5)
d.find_element_by_xpath('/html/body/div[1]/div[3]/div/div[2]/div/div/div/div/div[2]/div[1]/div[1]').click()
dialog = win32gui.FindWindow('#32770', u'文件上传')
ComboBoxEx = win32gui.FindWindowEx(dialog, 0, 'ComboBoxEx32', None)
ComboBox = win32gui.FindWindowEx(ComboBoxEx, 0, 'ComboBox', None)
Edit = win32gui.FindWindowEx(ComboBox, 0, 'Edit', None)
button = win32gui.FindWindowEx(dialog, 0, 'Button', None)
sleep(2)
win32gui.SendMessage(Edit, win32con.WM_SETTEXT, 0, r'C:\Users\DELL\Desktop\vid.mp4')
sleep(2)
win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button)
船长亲测可用,大家也试一下~~
微信公众号搜索“自动化测试实战”或扫描下方二维码添加关注~~~

selenium 上传文件方法补充——SendKeys、win32gui的更多相关文章
- Selenium上传文件方法总结
Web上本地上传图片,弹出的框Selenium是无法识别的,也就是说,selenium本身没有直接的方法去实现上传本地文件,这里总结了两种上传文件的方式. 一.利用Robot类处理文件上传. 其大致流 ...
- Selenium上传文件方法大全
最好的方法:调js 其他方法: Python pywin32库,识别对话框句柄,进而操作 SendKeys库 autoIT,借助外力,我们去调用其生成的au3或exe文件. keybd_event,跟 ...
- Java ftp上传文件方法效率对比
Java ftp上传文件方法效率对比 一.功能简介: txt文件采用ftp方式从windows传输到Linux系统: 二.ftp实现方法 (1)方法一:采用二进制流传输,设置缓冲区,速度快,50M的t ...
- django上课笔记7-jQuery Ajax 和 原生Ajax-伪造的Ajax-三种Ajax上传文件方法-JSONP和CORS跨域资源共享
一.jQuery Ajax 和 原生Ajax from django.conf.urls import url from django.contrib import admin from app01 ...
- Java+Selenium 上传文件,点击选择“浏览文件”按钮,报错invalid argument
Java+Selenium 上传文件,点击选择"浏览文件"按钮,报错invalid argument 解决代码: Actions action=new Actions(driver ...
- Selenium 上传文件失败,解决办法一
昨个改程序遇到一个问题,UI上面有需要上传文件的地方.但是我不知道怎么让Selenium完成 点击上传文件按钮->在弹出的文件选择窗口中选择路径和文件,点确定. 要知道弹出窗口属于window的 ...
- Ui自动化测试上传文件方法都在这里了
前言 实施UI自动化测试的时候,经常会遇见上传文件的操作,那么对于上传文件你知道几种方法呢?今天我们就总结一下几种常用的上传文件的方法,并分析一下每个方法的优点和缺点以及哪种方法效率,稳定性更高 被测 ...
- Selenium上传文件
selenium自带了对应的API可以上传问题,如果这个上传文件的html code中显示的type是file那么你就可以使用下面的代码上传文件. /** * click the upload but ...
- springmvc上传文件方法及注意事项
本文基于注解的配置,敬请留意 基于注解整合 一.springmvc为我们提供两种上传方式配置: org.springframework.web.multipart.commons.CommonsMu ...
随机推荐
- 前端解析cookie出现多余的双引号的问题
登录界面,用户提交后,后台获取到用户名密码,然后会设置cookie,以便于前端使用,今天在修改项目记住密码的功能的时候,读取cookie,如果存在loginInfo字段说明用户在上一次点击了记住密码的 ...
- Android 数据库 ObjectBox 源码解析
一.ObjectBox 是什么? greenrobot 团队(现有 EventBus.greenDAO 等开源产品)推出的又一数据库开源产品,主打移动设备.支持跨平台,最大的优点是速度快.操作简洁,目 ...
- 【转】TCP那些事(上,下)
TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面.所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获.关于TCP这个协议的细节,我还是推荐你去 ...
- form表单提交数据的数据格式
form表单提交的数据格式默认是 enctype="application/x-www-form-urlencoded"这样将input框的数据与input框的name属性以键值对 ...
- unity调用Android百度地图
由于个人是Android小白,在这个配置上面被折磨了很久,因此写下这篇文章 工具:eclipse + unity5.6.1 首先去百度地图开发者平台下载你需要的资源,我只需要显示地图和定位,这个时候你 ...
- python判断指定路径是否存在
https://www.cnblogs.com/jhao/p/7243043.html
- 13.LockSupport工具
1. LockSupport简介 在之前介绍AQS的底层实现,已经在介绍java中的Lock时,比如ReentrantLock,ReentReadWriteLocks,已经在介绍线程间等待/通知机制使 ...
- VS2010制作安装程序
转自(http://blog.csdn.net/wenmang1977/article/details/7733685) 序 前些天想写一下制作安装程序,由于要写的内容比较多,一拖再拖,不过坚持就是胜 ...
- [WinForm]Dundas Chart控件学习(附源码)
1.Dundas公司简介 加拿大的一家公司,专业做图表展现的,很牛,据说现在被Microsoft收购了.官网地址:http://www.dundas.com/ 2.Chart基本要素 3.最简单的柱状 ...
- Poj 2955 brackets(区间dp)
Brackets Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7795 Accepted: 4136 Descript ...