web自动化——Selenium 之上传

1、input上传

selenium只支持input元素的上传,直接使用send_keys将文件绝对地址写入元素即可

from selenium import webdriver
from time import sleep

driver=webdriver.Chrome()
driver.get("https://www.baidu.com/")

driver.find_element_by_xpath('//span[@class="soutu-btn"]').click()
sleep(1)
input = driver.find_element_by_xpath('//input[@class="upload-pic"]')
input.send_keys(r'C:\Users\86173\Pictures\Sunrise.jpg')
sleep(5)
driver.quit()

2、非input上传——pywinauto

缺点: 只能在windwows上使用

优点:可以选择多个文件,路径中有中文也可以

  1)安装

pip install pywinauto

  2)导包

from pywinauto.keyboard import send_keys

  3) 等待windows对话框出现

sleep(2)

  4)选择文件

    send_keys(文件路径)

    send_keys(文件路径) --多个文件多次调用send_keys方法

send_keys(r"D:\Pychram-Workspace\py39-web\day7\find.jpg")

  5) 确定 

send_keys('{ENTER}')

from selenium import webdriver
from pywinauto.keyboard import send_keys
from time import sleep

driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
# 点击搜索按钮
driver.find_element_by_xpath('//span[@class="soutu-btn"]').click()
sleep(3)
# 点击上传文件 弹出windows上传对话框
driver.find_element_by_xpath('//div[@class="upload-wrap"]').click()
sleep(2)
# 选择文件
send_keys(r"D:\Pychram-Workspace\py39-web\day7\find.jpg")
# 确定
send_keys('{ENTER}')
sleep(8)
driver.quit()

3、非input上传——pyautogui

缺点:只能选择一个文件,文件路径有中文会出问题

优点:跨平台(windows,mac,liunx)

  1)安装

pip install pyautogui

  2)导包

import pyautogui

  3)等待windows对话框出现

sleep(2)

  4)选择文件

    pyautogui.write(文件路径)

pyautogui.write(r"D:\Pychram-Workspace\py39-web\day7\find.jpg")

  5)选择确定

pyautogui.press('enter', 2)

from selenium import webdriver
import pyautogui
from time import sleep

driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
# 点击搜索按钮
driver.find_element_by_xpath('//span[@class="soutu-btn"]').click()
sleep(3)
# 点击上传文件 弹出windows上传对话框
driver.find_element_by_xpath('//div[@class="upload-wrap"]').click()
sleep(2)
# 选择文件
pyautogui.write(r"D:\Pychram-Workspace\py39-web\day7\find.jpg")
# 确定
pyautogui.press('enter', 2)
sleep(8)
driver.quit()
posted @ 2024-03-02 20:22  芒果93  阅读(33)  评论(0编辑  收藏  举报