Selenium2+python自動化75-非input文件上傳(SendKeys)


前言

不少小伙伴問非input標簽如何上傳文檔,這個本身就是一坑,無奈很多小伙伴非要跳坑里去,那就介紹一個非主流的上傳文件方法吧,用第三方庫SendKeys.

只支持python2環境

python3 的用 PyUserInput 看這篇 selenium+python自動化85-python3.6上SendKeys報錯用PyUserInput取代

 

一、SendKeys安裝

1.pip安裝SendKeys

>pip install SendKeys

 

2.在安裝的時候如果你出現上面保存,先別急着截圖貼群求大神,上面已經告訴解決辦法了:Get it from http://aka.ms/vcpython27

3.按上面給的地址下載文件,一路傻瓜式安裝就行

4.出現如下界面,說明安裝成功了

 

二、參考代碼

1.以下代碼在Chrom瀏覽器上是運行通過的,要先登錄博客園記住密碼,然后加載配置免登錄

2.chrome加載配置方法,只需改下面一個地方,username改成你電腦的名字(別用中文!!!)

'--user-data-dir=C:\Users\username\AppData\Local\Google\Chrome\User Data'

3.后面兩次回車,是因為搜狗輸入法,第一個回車是確認輸入,第二個是確定選中的文件

# coding:utf-8
from selenium import webdriver
import SendKeys
import time

# 加載Firefox配置
# profileDir = r'C:\Users\xxxAppData\Roaming\Mozilla\Firefox\Profiles\1x41j9of.default'
# profile = webdriver.FirefoxProfile(profileDir)
# driver = webdriver.Firefox(profile)

# 加載Chrome配置
option = webdriver.ChromeOptions()
option.add_argument('--user-data-dir=C:\Users\xxxAppData\Local\Google\Chrome\User Data')
driver = webdriver.Chrome(chrome_options=option)

driver.implicitly_wait(30)
driver.get("http://www.cnblogs.com/yoyoketang/")
driver.find_element_by_link_text("新隨筆").click()
time.sleep(3)
# 點開編輯器圖片
driver.find_element_by_css_selector("img.mceIcon").click()
time.sleep(3)
# 定位所有iframe,取第二個
iframe = driver.find_elements_by_tag_name('iframe')[1]
# 切換到iframe上
driver.switch_to_frame(iframe)

# 文件路徑
time.sleep(2)
driver.find_element_by_class_name("qq-upload-button").click()
# driver.find_element_by_name("file").click()
time.sleep(5)

# SendKeys方法輸入內容
SendKeys.SendKeys("D:\\test\\jie1\\blog\\12.png")  # 發送文件地址
time.sleep(1)
SendKeys.SendKeys("{ENTER}")   # 發送回車鍵
time.sleep(1)
SendKeys.SendKeys("{ENTER}")    # 因為我的電腦是搜索輸入法,所以多看一次回車
# driver.quit()

 

(備注:這里Firefox上運行有個坑,第二次回車失效了,這個暫時沒想到好的解決辦法)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM