在python中使用selenium webdriver在无头模式下通过Chrome文件上载对话框上载文件

在python中使用selenium webdriver在无头模式下通过Chrome文件上载对话框上载文件,selenium,dialog,webdriver,headless,Selenium,Dialog,Webdriver,Headless,我试图在无头模式下使用selenium chrome驱动程序将文件上载到web,但web不支持使用send_键的输入标记,它会打开一个chrome文件上载对话框。我尝试使用pyautogui来处理键盘,并在我的计算机中键入指向对话框的文件路径,但它只是在没有headless模式的情况下工作 有没有办法解决这个上传问题 您可能想尝试运行一些Javascript来显示输入元素。我个人在headless模式下运行了测试,成功地执行了这个确切的功能 # Fetch file input element

我试图在无头模式下使用selenium chrome驱动程序将文件上载到web,但web不支持使用send_键的输入标记,它会打开一个chrome文件上载对话框。我尝试使用pyautogui来处理键盘,并在我的计算机中键入指向对话框的文件路径,但它只是在没有headless模式的情况下工作


有没有办法解决这个上传问题

您可能想尝试运行一些Javascript来显示输入元素。我个人在headless模式下运行了测试,成功地执行了这个确切的功能

# Fetch file input element
fileInput = driver.find_element_by_xpath("//input[@type='file']")

#  Execute Javascript to reveal the element
driver.execute_script("arguments[0].style.display = 'block';", fileInputElement)

# Send keys to file input
fileInput.send_keys("Path/To/File/To/Upload")

一旦你这样做了,你就可以将密钥发送到隐藏元素。

很抱歉,我不知道如何使用github,我只是个新手这里有完整的代码@tăngĐứcThịnh根据您发布的HTML示例更新了我的答案。令人惊讶的是,它是有效的,我认为selenium无法做到这一点。谢谢