文件上传

"""
上传文件的两种情况:

一种是通过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()

 

posted @ 2022-01-07 23:37  2orange  阅读(75)  评论(0编辑  收藏  举报