selenium 上传文件方法补充——SendKeyswin32gui

Posted 孟船长

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selenium 上传文件方法补充——SendKeyswin32gui相关的知识,希望对你有一定的参考价值。

之前和大家说了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 上传文件方法补充——SendKeyswin32gui的主要内容,如果未能解决你的问题,请参考以下文章

Python Selenium 文件上传

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

Selenium上传文件方法总结

selenium之 文件上传所有方法整理总结

selenium之文件上传

selenium上传文件方法汇总