1、Selenium實現檔案上傳
檔案上傳在Web頁面上是非常常見的一個操作,一般頁面中的檔案上傳按鈕分為兩種,一種是input標籤,另一種是非input標籤
1.1 方式一:input標籤上傳檔案
這種方式的檔案上傳比較簡單,可以定位到 input 標籤後,直接 .send_keys() 就ok了
示例程式碼
# 1.匯入selenium
from selenium import webdriver
# 2.開啟瀏覽器
driver = webdriver.Chrome()
# 3.開啟註冊A頁面(頁面地址根據自己的需要修改)
url = "xxx"
driver.get(url)
driver.maximize_window()
# 4.定位上傳檔案按鈕
upfile = driver.find_element_by_name("upfile")
# 5.使用send_keys方法上傳檔案
upfile.send_keys(r"C:\Users\L\Desktop\測試上傳檔案.txt")
# 6.關閉瀏覽器
driver.quit()
1.2 方式二:非input檔案上傳
這種非input的檔案上傳實現起來相對來說要複雜一些,可以藉助 autoit 工具或者 SendKeys 第三方庫來實現。在上傳的過程當中一般要開啟系統的Windows視窗,從視窗選擇本地檔案新增。
# 開啟上傳網站
driver.get("https://tinypng.com/")
paths = Path.cwd().parent
# 觸發檔案上傳的操作
driver.find_element_by_css_selector("section.target").click()
time.sleep(2)
# 一級頂層視窗
dialog = win32gui.FindWindow("#32770", "開啟")
# 二級視窗
comboBoxEx32 = win32gui.FindWindowEx(dialog, 0, "ComboBoxEx32", None)
# 三級視窗
comboBox = win32gui.FindWindowEx(comboBoxEx32, 0, "ComboBox", None)
# 四級視窗 -- 檔案路徑輸入區域
edit = win32gui.FindWindowEx(comboBox, 0, "Edit", None)
# 二級視窗 -- 開啟按鈕
button = win32gui.FindWindowEx(dialog, 0, "Button", None)
# 1、輸入檔案路徑
filepath = f"{paths}\\resources\\11.png"
win32gui.SendMessage(edit, win32con.WM_SETTEXT, None, filepath)
# 2、點選開啟按鈕
win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button)
2、Selenium實現檔案下載
這裡主要講一下Chrome瀏覽器檔案下載
示例
首先需要設定option:
(1)download.default_directory:設定下載路徑
(2)profile.default_content_settings.popups:設定為0 禁止彈出視窗
# 1.匯入selenium
from selenium import webdriver
from time import sleep
# 2. 建立谷歌瀏覽器載入項物件
options = webdriver.ChromeOptions()
# 3. 定義載入項引數
prefs = {'profile.default_content_settings.popups': 0,
'download.default_directory': 'f:\\'}
# 4.將載入項引數新增到谷歌瀏覽器載入項物件中
options.add_experimental_option('prefs', prefs)
# 5. 建立瀏覽器物件,並新增載入項物件
driver = webdriver.Chrome(options=options)
# 6. 方位下載頁面
driver.get('https://npm.taobao.org/mirrors/chromedriver/80.0.3987.106/')
# 7. 點選下載
driver.find_element_by_link_text("chromedriver_win32.zip").click()
sleep(3)
# 8.關閉瀏覽器
driver.quit()