打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
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)
             

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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Python图片批量自动抠图去背景的代码详解
Selenium2+python自动化75-非input文件上传(SendKeys)
Python反爬虫(2) | Python爬虫,破解ajax动态网页,爬取篮球比赛数据
TestAuto
【WebDriver API】python之selenium多窗口切换
量化交易,散户也可实现全自动化交易,减少情绪干扰——量化02
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服