文件上传
""" 上传文件的两种情况: 一种是通过input框:如果上传文件的元素节点是input标签时可以用这种方法,无需借助winauto中的send_keys方法 一种是通过js上传的:因为点击上传文件后,选择文件的弹窗不是网页的,而是电脑的系统弹窗,无法直接用selenium操作选择文件, 所以要借助winauto中的send_keys方法 js上传文件处理方法: 1、pywinauto 缺点:只能在windows上使用 优点:可以选择多个文件,路径中有中文也可以 2、pyautogui 优点: 跨平台(linux,mac,windows都可以用) 缺点:只能选择一个文件,文件路径有中文会出问题 pip install pywinauto -i https://mirrors.aliyun.com/pypi/simple/ pip install pyautogui -i https://mirrors.aliyun.com/pypi/simple/ """ import time from selenium import webdriver from selenium.webdriver.common.by import By from pywinauto.keyboard import send_keys driver = webdriver.Chrome() driver.get("#某个可以上传文件的网址#") # -----input上传----------- driver.find_element(by=By.XPATH, value="//#帮助定位的父类或祖上类元素#/input").send_keys("#文件路径#") # ------------pywinauto 通过窗口上传单个文件---------------------- # from pywinauto.keyboard import send_keys # 定位文件上传按钮,点击 driver.find_element(by=By.ID, value="#文件上传按钮的id值#").click() # 输入文件路径 send_keys("#文件路径#") # 输入回车键(确定) send_keys('{VK_RETURN}') # ------------pywinauto 通过窗口上传多个文件---------------------- # from pywinauto.keyboard import send_keys # 定位文件上传按钮,点击 driver.find_element(by=By.ID, value="#文件上传按钮的id值#").click() # 输入文件路径 send_keys('"#文件1的路径#"') # 多文件上传要加两层引号,因为多文件选择时,上传选择框里每个文件是用双引号引起来的 send_keys('"#文件2的路径#"') send_keys('"#文件3的路径#"') # 输入回车键(确定) send_keys('{VK_RETURN}') # ---------------pyautogui上传文件------------------------ # import pyautogui driver.find_element(by=By.ID, value="#文件上传按钮的id值#").click() pyautogui.write('#文件路径#') pyautogui.press('enter', 2) time.sleep(5) driver.quit()