Selenium系列(十一) - 針對兩種上傳文件方式的實現方案


如果你還想從頭學起Selenium,可以看看這個系列的文章哦!

https://www.cnblogs.com/poloyy/category/1680176.html

 

其次,如果你不懂前端基礎知識,需要自己去補充哦,博主暫時沒有總結(雖然我也會,所以我學selenium就不用復習前端了哈哈哈...)

 

首先,將下面html代碼保存到一個文件中

后續第一種上傳文件方式的代碼小案例都是訪問此html的

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
      <input type="file" name="pic" id="pic" />
</body>
</html>

 

方式一:input標簽上傳文件

比較簡單,可以定位input標簽后,直接 .send_keys() 就可以了

# !/usr/bin/env python
# -*- coding: utf-8 -*-

"""
__title__  =
__Time__   = 2020/3/25 17:52
__Author__ = 小菠蘿測試筆記
__Blog__   = https://www.cnblogs.com/poloyy/
"""
from selenium import webdriver

driver = webdriver.Chrome("../resources/chromedriver.exe")

# 需要自己修改路徑
driver.get("file:///C://上傳文件.html")
driver.maximize_window()

# 定位上傳文件元素input[type=file]
pic = driver.find_element_by_id("pic")

# 上傳文件
pic.send_keys(r"C:/上傳文件.html")

 

方式二:非input標簽上傳文件

# 打開上傳網站
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)

這個是寫死的方法,直接照搬即可,因為涉及了第三方工具去定位Window元素,暫時不展開詳解

 


免責聲明!

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



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