【发布时间】:2021-08-13 22:46:31
【问题描述】:
我正在使用 Selenium 和 Chrome 来模拟单击下载 PDF 文件的按钮。一切正常,Chrome 显示下载成功,单击 Chrome 上的文件会打开并充分显示文件。但是,当我尝试从文件管理器或任何其他应用程序(包括ls -a 作为超级用户)访问文件时,下载的文件不存在。这是 Selenium/Chrome 故意做的吗?有什么办法可以规避吗?
我在 Xubuntu 20.04.2 LTS 上运行 Python 3.8.5。 Selenium 是 3.141.0 版本,ChromeDriver 是 90.0.4430.212。
这是我初始化 webdriver 的方式:
from tempfile import TemporaryDirectory
from selenium import webdriver
self.tmpdir = TemporaryDirectory()
options = webdriver.ChromeOptions()
options.add_experimental_option("prefs", {
"download.default_directory": self.tmpdir.name,
"download.prompt_for_download": False,
"download.directory_upgrade": True,
"safebrowsing.enabled": True
})
options.add_argument('window-size=1366x768')
self.webdriver = webdriver.Chrome(options=options)
self.webdriver.implicitly_wait(25)
【问题讨论】:
-
在执行过程中会下载到当前根文件夹的项目文件夹中。你能检查一下它是否在那里。
-
是的,我可以:下载的文件没有显示在项目目录中。在 Chrome 中打开 PDF 在地址栏中显示
file:///tmp/[TEMPORARYDIR]/[FILENAME].pdf,这也不是项目的目录。 -
你签入临时目录了吗?
-
是的,这对我来说很奇怪。使用 python 的
TemporaryDirectory()创建的文件夹对于ls -a和文件管理器来说是完全空的,即使生成的 Chrome 窗口告诉我 PDF 在那里。
标签: python selenium selenium-webdriver selenium-chromedriver