python+selenium怎么上传图片呀

要求:
第一步,点击“上传您的头像”


第二步,在弹出的文件选择弹窗中选择对应图片

第三步,点击弹窗的打开按钮提交图片

我之前遇到的是input类型的元素,就直接sendkeys把路径传过去,但是现在是button类型的,有没有大佬熟悉这个呀~~

pywinauto:可以使用pywinauto来进行控制windows控件来进行上传文件

可以借助 AutoIt 这个工具来完成,下载地址文档地址
具体参考这个帖子
已经验证过,测试通过

我的 AutoIt 代码你应该可以直接使用

autodemo.au3

ControlFocus("打开","","Edit1")
WinWait("[CLASS:#32770]","",10)
ControlSetText("打开","","Edit1", $CmdLine[1] )
Sleep(2000)
ControlClick("打开","","Button1");

test_uoload.py

import os
from time import sleep

from selenium import webdriver


class TestUpload:
    def setup(self):
        self.driver = webdriver.Chrome()
        self.driver.implicitly_wait(5)

    def teardown(self):
        self.driver.quit()

    def test_upload(self):
        self.driver.get("https://www.layui.com/demo/upload.html")
        self.driver.find_element_by_id("test1").click()
        picpath = r'C:\Users\heng\Pictures\time.jpg'
        os.system(fr'C:\Users\heng\Desktop\autodemo.exe {picpath}')
        sleep(3)

好的 我试试 感谢回复 :heart:

你好,我这边试过了,按照这个方式还是不能填充图片路径并提交关闭弹窗。
手动在cmd窗口中输入脚本路径和图片路径弹窗提示什么16位不兼容(我用的是windows系统),我还得再看看

这个button上面就是一个input类型的元素 如果没猜测的话按钮只是用来触发事件的,最终结果还是会放入input中,可以先试试看

感谢回复,已经解决了,都有隐藏的input,通过sendkeys可以成功上传图片

driver.find_elements_by_tag_name("input")[0].send_keys(pic_url)