selenium怎么判断文件下载文件是否下载完成比如有10个文件其中9个下载下来另外一个没有下载下来需要记录以下未下载下来的文件且重试下载设置重试下载次数超过次数徐记录未下载的文件且文件下载完成后对文件进行改名python代码举例
你可以使用Selenium的WebDriverWait类来等待文件下载完成,然后使用os模块来改名和移动文件。以下是一个示例代码:
import os
import time
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
# 设置下载文件保存的目录
download_dir = '/path/to/download/directory'
# 设置重试下载次数
max_retry = 3
# 这里假设有10个文件需要下载,文件名分别为file1.txt, file2.txt, ..., file10.txt
files_to_download = ['file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', 'file5.txt', 'file6.txt', 'file7.txt', 'file8.txt', 'file9.txt', 'file10.txt']
# 创建WebDriver对象
driver = webdriver.Chrome()
# 设置下载文件的保存目录
chrome_options = webdriver.ChromeOptions()
prefs = {'download.default_directory': download_dir}
chrome_options.add_experimental_option('prefs', prefs)
driver = webdriver.Chrome(chrome_options=chrome_options)
# 下载文件函数
def download_file(file_url):
driver.get(file_url)
# 等待文件下载完成
wait = WebDriverWait(driver, 10)
wait.until(EC.presence_of_element_located((By.XPATH, '//a[contains(text(), "Open")]')))
time.sleep(1) # 等待1秒钟确保文件下载完成
# 重试下载函数
def retry_download(file_url):
retry_count = 0
while retry_count < max_retry:
try:
download_file(file_url)
break
except:
retry_count += 1
print(f'Retrying download ({retry_count}/{max_retry})...')
time.sleep(1) # 等待1秒钟再次尝试下载
# 下载文件并重命名
for file_name in files_to_download:
file_url = f'http://example.com/files/{file_name}'
retry_download(file_url)
# 判断文件是否下载成功
if file_name not in os.listdir(download_dir):
print(f'Failed to download file: {file_name}')
else:
# 文件下载完成后对文件进行改名
new_file_name = f'new_{file_name}'
os.rename(os.path.join(download_dir, file_name), os.path.join(download_dir, new_file_name))
print(f'Successfully downloaded and renamed file: {new_file_name}')
# 关闭浏览器
driver.quit()
上述代码首先设置了下载文件保存的目录和重试下载次数。然后创建了WebDriver对象,并设置了下载文件的保存目录。接下来定义了下载文件的函数和重试下载的函数。
在主循环中,循环遍历需要下载的文件列表,首先尝试下载文件,如果下载失败则进行重试,最多重试max_retry次。然后判断文件是否下载成功,如果下载成功则对文件进行重命名。
最后关闭浏览器。请根据你的实际情况修改代码中的下载文件保存目录、文件名和下载链接
原文地址: http://www.cveoy.top/t/topic/h73D 著作权归作者所有。请勿转载和采集!