从headless上传文件



我有这样一个元素,可以通过单击上传文件

<a class="gray_box" href="#">Choose world folder<span>Select the world folder, we'll do the rest</span></a>

问题是,当单击时,它会调用文件管理器屏幕截图

首先我这样下载:

import pyautogui
button = wait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "[href='#']"))).click()
pyautogui.write(<path>)
pyautogui.press('enter')

但这不允许我以无头模式上传文件

因为该路径直接插入控制台;确认窗口";被调用,必须手动确认

如何在无头模式下上传文件?

使用Selenium上传文件是通过将上传的文件完整路径字符串发送到一个特殊元素来完成的。此元素可以使用以下XPath"//input[@type='file']"定位,也可以位于CSS Selector样式"input[type='file']"
因此,如果您希望上传的文件是例如";C: \my_folder\the_file.png"它可以与Selenium一起上传,代码行如下:

driver.find_element(By.XPATH, "//input[@type='file']").send_keys("C:my_folderthe_file.png")

有些网站在无头模式下请求用户代理,请在工作中编辑此参数,然后重试。

chrome_options.add_argument("--user-agent=User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36")
import pyautogui
import time
from selenium.webdriver.common.keys import Keys
driver.get('https://chunker.app/#')
button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "[href='#']"))).click()
time.sleep(2)
pyautogui.write(path+Keys.ENTER)
pyautogui.press('enter')
time.sleep(2)
pyautogui.press('enter')
time.sleep(2)
pyautogui.press('enter')

这目前在非无头测试中还没有经过无头测试。总共约有4次入场。

相关内容

  • 没有找到相关文章