要使用Python Selenium WebDriver上传没有输入类型但在HTML中有按钮类型的文件,可以按照以下步骤进行操作:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome() # 使用Chrome浏览器,需要提前安装ChromeDriver并配置到系统环境变量中
driver.get("https://example.com") # 替换为实际的目标网页URL
upload_button = driver.find_element(By.XPATH, "//input[@type='button' and @value='上传文件']")
这里使用XPath定位方式,根据按钮的属性进行定位,可以根据实际情况修改XPath表达式。
driver.execute_script("arguments[0].click();", upload_button)
通过执行JavaScript代码,模拟点击上传按钮。
file_input = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//input[@type='file']")))
使用WebDriverWait等待文件选择对话框元素出现,设置最大等待时间为10秒。
file_input.send_keys("文件路径") # 替换为实际的文件路径
将实际的文件路径替换为要上传的文件的路径。
WebDriverWait(driver, 10).until(EC.invisibility_of_element_located((By.XPATH, "//input[@type='file']")))
使用WebDriverWait等待文件选择对话框元素消失,表示文件上传完成。
完整的代码示例:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get("https://example.com")
upload_button = driver.find_element(By.XPATH, "//input[@type='button' and @value='上传文件']")
driver.execute_script("arguments[0].click();", upload_button)
file_input = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//input[@type='file']")))
file_input.send_keys("文件路径")
WebDriverWait(driver, 10).until(EC.invisibility_of_element_located((By.XPATH, "//input[@type='file']")))
driver.quit()
请注意,这只是一个示例代码,具体的定位方式和等待条件可能需要根据实际情况进行调整。另外,对于不同的网页和文件上传按钮,可能需要使用不同的定位方式和操作方法。
领取专属 10元无门槛券
手把手带您无忧上云