要求:
第一步,点击“上传您的头像”
第二步,在弹出的文件选择弹窗中选择对应图片
第三步,点击弹窗的打开按钮提交图片
我之前遇到的是input类型的元素,就直接sendkeys把路径传过去,但是现在是button类型的,有没有大佬熟悉这个呀~~
要求:
第一步,点击“上传您的头像”
我之前遇到的是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)
好的 我试试 感谢回复
你好,我这边试过了,按照这个方式还是不能填充图片路径并提交关闭弹窗。
手动在cmd窗口中输入脚本路径和图片路径弹窗提示什么16位不兼容(我用的是windows系统),我还得再看看
这个button上面就是一个input类型的元素 如果没猜测的话按钮只是用来触发事件的,最终结果还是会放入input中,可以先试试看
感谢回复,已经解决了,都有隐藏的input,通过sendkeys可以成功上传图片
driver.find_elements_by_tag_name("input")[0].send_keys(pic_url)