如果是上传文件的标签名是input,而且type属性值是file(ps:<input type='file'>),对于这种文件上传,可以直接用send_keys(param),param为所要上传文件的绝对路径。
以下为代码例子:
from selenium import webdriver
from gaojidengdai.gongjulei import Duogongneng
from selenium.webdriver.common.by import By
import time
文件路径:
wenjian='E:\qiushengzhilu.txt'
qihuan=(By.XPATH,'.//*[@id="TANGRAM__PSP_4__footerULoginBtn"]')
username=(By.XPATH,'.//*[@id="TANGRAM__PSP_4__userName"]')
userpass=(By.XPATH,'.//*[@id="TANGRAM__PSP_4__password"]')
userjizhu=(By.XPATH,'.//*[@id="TANGRAM__PSP_4__memberPass"]')
userbutton=(By.XPATH,'.//*[@id="TANGRAM__PSP_4__submit"]')
usershangchuan=(By.XPATH,'.//*[@id="h5Input0"]')
yanzhingma=(By.XPATH,'.//*[@id="TANGRAM__23__button_send_mobile"]')
driver = webdriver.Chrome()
driver.get("https://pan.baidu.com/")
d = Duogongneng(driver)
d.click(qihuan)
d.sendkey(username,"17610331663")
d.sendkey(userpass,"duanyu1203..")
d.click(userjizhu)
d.click(userbutton)
s=d.isElementI(yanzhingma)
time.sleep(3)
if s:
time.sleep(20)
pass
else:
pass
直接输入文件路径就可以了
d.sendkey(usershangchuan,wenjian)
另外一种:可以通过控制键盘来操作
使用 用python的第三方库pypiwin32,具体操作见下代码
首先通过pip工具进行安装该依赖库:
在cmd中执行: python -m pip install pypiwin32
然后在项目中导入:
from selenium import webdriver
from gaojidengdai.gongjulei import Duogongneng
from selenium.webdriver.common.by import By
import time
import win32clipboard as w
import win32con
import win32api
wenjian='E:\qiushengzhilu.txt'
qihuan=(By.XPATH,'.//*[@id="TANGRAM__PSP_4__footerULoginBtn"]')
username=(By.XPATH,'.//*[@id="TANGRAM__PSP_4__userName"]')
userpass=(By.XPATH,'.//*[@id="TANGRAM__PSP_4__password"]')
userjizhu=(By.XPATH,'.//*[@id="TANGRAM__PSP_4__memberPass"]')
userbutton=(By.XPATH,'.//*[@id="TANGRAM__PSP_4__submit"]')
usershangchuan=(By.XPATH,'.//*[@id="h5Input0"]')
yanzhingma=(By.XPATH,'.//*[@id="TANGRAM__23__button_send_mobile"]')
driver = webdriver.Chrome()
driver.get("https://pan.baidu.com/")
d = Duogongneng(driver)
d.click(qihuan)
d.sendkey(username,"17610331663")
d.sendkey(userpass,"duanyu1203..")
d.click(userjizhu)
d.click(userbutton)
s=d.isElementI(yanzhingma)
time.sleep(3)
if s:
time.sleep(20)
pass
else:
pass
# 点击文件上传按钮
d.click(usershangchuan)
#打开剪切板功能
w.OpenClipboard()
#清空剪切板
w.EmptyClipboard()
#剪切内容
w.SetClipboardData(win32con.CF_UNICODETEXT,wenjian)
#关闭剪切板
w.CloseClipboard()
VK_CODE={
'enter':0x0D,
'ctrl':0x11,
'v':0x56,
}
time.sleep(2)
#按下ctrl键
win32api.keybd_event(VK_CODE["ctrl"],0,0,0)
#按下v键
win32api.keybd_event(VK_CODE["v"],0,0,0)
#释放ctrl键
win32api.keybd_event(VK_CODE["ctrl"],0,win32con.KEYEVENTF_KEYUP,0)
#释放v键
win32api.keybd_event(VK_CODE["v"],0,win32con.KEYEVENTF_KEYUP,0)
#按下enter键
win32api.keybd_event(VK_CODE["enter"],0,0,0)
# 释放enter键
win32api.keybd_event(VK_CODE["enter"],0,win32con.KEYEVENTF_KEYUP,0)
time.sleep(2)