📅  最后修改于: 2023-12-03 15:24:22.726000             🧑  作者: Mango
在使用 Selenium 进行自动化测试时,有时需要上传文件。本文将介绍如何使用 Selenium 进行文件上传。
在进行文件上传前,需要先确定上传的文件路径。在本文的代码示例中,将使用相对路径 file.txt
。
首先需要定位上传按钮,并使用 click()
方法触发上传功能。
upload_button = driver.find_element_by_xpath("//input[@type='file']")
upload_button.click()
接下来需要在文件上传对话框中输入文件路径。对于弹出的文件上传对话框,无法使用 Selenium 直接操作,但可以通过使用第三方工具 AutoIt 或 Sikuli 来处理。
在本文的代码示例中,将使用 AutoIt 来模拟键盘操作输入文件路径。
import os
import autoit
current_directory = os.path.dirname(os.path.realpath(__file__))
file_path = os.path.join(current_directory, "file.txt")
autoit.win_wait_active("打开", 5)
autoit.control_send("打开", "Edit1", file_path + "{ENTER}")
上述代码中,current_directory
用于获取当前文件所在目录的路径,file_path
将 file.txt
文件路径与当前文件所在目录的路径进行拼接得到文件的完整路径。接着使用 autoit.win_wait_active()
方法等待文件上传对话框出现,autoit.control_send()
方法模拟键盘操作输入文件路径,并使用 ENTER
键确认输入。
最后需要确认文件上传操作,可通过定位上传按钮,判断是否已成功上传文件。
upload_button = driver.find_element_by_xpath("//input[@type='file']")
file_name = upload_button.get_attribute("value")
assert file_name == file_path
上述代码中,使用 get_attribute()
方法获取已上传的文件路径,并将其与 file.txt
文件路径进行比较,验证文件上传是否成功。
下面是完整的代码示例,供参考。
import os
import autoit
from selenium import webdriver
# 创建 WebDriver
driver = webdriver.Chrome()
# 打开待测网站
driver.get("https://example.com/upload")
# 定位上传按钮
upload_button = driver.find_element_by_xpath("//input[@type='file']")
upload_button.click()
# 输入文件路径
current_directory = os.path.dirname(os.path.realpath(__file__))
file_path = os.path.join(current_directory, "file.txt")
autoit.win_wait_active("打开", 5)
autoit.control_send("打开", "Edit1", file_path + "{ENTER}")
# 确认上传文件
upload_button = driver.find_element_by_xpath("//input[@type='file']")
file_name = upload_button.get_attribute("value")
assert file_name == file_path
# 关闭浏览器
driver.quit()
上述代码中,使用 webdriver.Chrome()
方法创建 Chrome WebDriver,打开待测网站,并定位上传按钮。接下来使用 AutoIt 模拟键盘输入文件路径,并确认文件上传操作是否成功。最后关闭浏览器。