前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >selenium 上传文件方法补充——SendKeys、win32gui

selenium 上传文件方法补充——SendKeys、win32gui

作者头像
孟船长
发布2018-05-18 18:28:45
1.8K0
发布2018-05-18 18:28:45
举报
文章被收录于专栏:自动化测试实战

之前和大家说了input标签的上传文件的方式:

《selenium2 python 自动化测试实战》(13)——上传文件

现在好多网站上传的标签并不是input,而是div之类的比如:

全部都是div标签,这时候用上面的方法就不好用了。今天船长在大神的帮助下学会了两种方法,现在船长来教大家上传div这种标签的方式。

最方便的——SendKeys

大家只需要pip install SendKeys库,然后再代码里直接用就OK了,这里用大鱼号上传视频作为例子上代码:

注意,浏览器用的是火狐,因为chrome浏览器会不支持哦~

代码语言:javascript
复制
# 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

下载好这两个库以后,就可以上代码啦:

代码语言:javascript
复制
# 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)

船长亲测可用,大家也试一下~~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-01-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 自动化测试实战 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 最方便的——SendKeys
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档