使用Selenium通过cygwin在Python中使用ChromeDriver和Chrome浏览器下载csv文件后,出现路径失败的错误

时间:2018-12-13 08:43:36

标签: python-3.x selenium google-chrome selenium-webdriver selenium-chromedriver

我尝试从selenium启动的Chrome浏览器中下载csv文件。

但是

Failed- Path too long error

下载csv文件时发生。

路径:

C:/s/d/b

我像下面那样更改路径,但是同样的错误...

/cygdrive/c/s/d/a
\cygdrive\c\s\d\a
\\cygdrive\\c\\s\\d\\a


csv文件

20181213171306.csv

chromedriver的路径

/cygdrive/c/Users/HOGEHOGE/chromedriver_2.45.exe

使用cygwin,执行下面的python脚本。

python3 C:/s/d/a.py


我在下面设置了Web驱动程序选项。

DIR_DL="C:/s/d/b"
options = Options()
options.add_experimental_option("prefs", {
  "download.default_directory":DIR_DL,
})
driver = webdriver.Chrome(executable_path=CHROMEDRIVER_PATH,chrome_options=options)
driver.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command')
params = {'cmd': 'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': DIR_DL}}
command_result = driver.execute("send_command", params)


有人知道如何解决这个问题吗?

enter image description here

enter image description here

“失败-パスが长すぎます”是日语。表示“失败-路径太长错误”。

[环境]
Windows 10
CYGWIN_NT-10.0 2.11.2
Python 3.6.4
硒3.141.0
chrome驱动程序2.45
chrome浏览器71

4 个答案:

答案 0 :(得分:0)

尝试使用双斜杠作为路径名:

  

C:\ d \ s \ b

还尝试在webdriver的初始状态下设置驱动程序页面下载选项。

driver.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command')
params = {'cmd': 'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': "/path/to/download/dir"}}
command_result = driver.execute("send_command", params)

答案 1 :(得分:0)

尝试使用add_argument设置下载目录

options = Options()
options.add_argument("download.default_directory=C:/s/d/b")
driver = webdriver.Chrome(executable_path=CHROMEDRIVER_PATH, chrome_options=options)

答案 2 :(得分:0)

此错误消息...

Failed-Path Too Long

...表示 ChromeDriver 无法与(最近)下载的文件进行交互。


根据讨论Wrong error - "Path Too Long" ... Error should be "File Already Open",当 WebDriver 实例(即驱动程序尝试过早使用下载的文件)时,会观察到此问题。

错误快照:

Failed-Path Too Long


解决方案

在以下twp步骤之间引起一些 wait

  • 下载csv文件。
  • 使用csv文件进行下一步操作。

答案 3 :(得分:0)

我将cygwin的CSV下载路径更改为dom的路径,然后成功下载了csv文件。

CSV下载的路径

/cygdrive/c/Users/CSV_DOWNLOAD_PATH

C:/Users/CSV_DOWNLOAD_PATH

非常感谢您的答复。