首页 > 解决方案 > 通过 selenium 下载文件后无法更改目录

问题描述

我正在从事这个项目,该项目涉及下载每日 .csv。我已经成功编写了通过 selenium 下载 .csv 文件的代码。但是,我在运行整个代码时无法更改目录。

有问题的代码如下:


download_purchases = driver.find_element_by_xpath('/html/body/div[1]/div/div/div/div[3]/div/div[2]')
download_purchases.click()

fp = os.path.expanduser('~')+'/Desktop/Export_Purchasing/CSV/'
os.chdir(fp)
files = [f for f in os.listdir(fp)]

到目前为止,当我运行整个语法时,文件列表理解会生成一个空列表。但是,当我重新运行它时(在尝试从头开始运行整个代码之后),列表理解能够检测到下载的 .csv。

我怎样才能使它在第一次通过时检测到文件?我尝试通过以下方式退出驱动程序:

driver.quit()

但这并没有解决问题。

标签: pythonselenium

解决方案


看起来文件可能在到达最后一行时尚未下载:files = [f for f in os.listdir(fp)]. 要对此进行测试,您可以添加如下睡眠:

import time

download_purchases = driver.find_element_by_xpath('/html/body/div[1]/div/div/div/div[3]/div/div[2]')
download_purchases.click()

fp = os.path.expanduser('~')+'/Desktop/Export_Purchasing/CSV/'
os.chdir(fp)


print("Printed immediately.")
time.sleep(10)
files = [f for f in os.listdir(fp)]

如果这有效,那么您知道这只是一个时间问题,您可以采用更复杂的解决方案在下载完成后继续。


推荐阅读