之前和大家說了input標(biāo)簽的上傳文件的方式:
《selenium2 python 自動(dòng)化測試實(shí)戰(zhàn)》(13)——上傳文件
現(xiàn)在好多網(wǎng)站上傳的標(biāo)簽并不是input,而是div之類的比如:
全部都是div標(biāo)簽,這時(shí)候用上面的方法就不好用了。今天船長在大神的幫助下學(xué)會(huì)了兩種方法,現(xiàn)在船長來教大家上傳div這種標(biāo)簽的方式。
大家只需要pip install SendKeys庫,然后再代碼里直接用就OK了,這里用大魚號(hào)上傳視頻作為例子上代碼:
注意,瀏覽器用的是火狐,因?yàn)閏hrome瀏覽器會(huì)不支持哦~
# 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登錄,跳過驗(yàn)證碼
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
這種方法有點(diǎn)麻煩,而且下載庫的時(shí)候非常麻煩……
要安裝
1、pywin32-218.win-amd64-py2.7.exe
2、pypiwin32
下載好這兩個(gè)庫以后,就可以上代碼啦:
# 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)
船長親測可用,大家也試一下~~
聯(lián)系客服