From 6cb017cfc6b058e33d02d97f6315df20d7800351 Mon Sep 17 00:00:00 2001 From: Alexander Millin Date: Fri, 24 May 2024 15:38:57 +0300 Subject: [PATCH] Fix EOFError when calling the Remote WebDriver download_file method --- py/selenium/webdriver/remote/webdriver.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/py/selenium/webdriver/remote/webdriver.py b/py/selenium/webdriver/remote/webdriver.py index c1fa5110898b7..ccb6b0b5e1830 100644 --- a/py/selenium/webdriver/remote/webdriver.py +++ b/py/selenium/webdriver/remote/webdriver.py @@ -20,6 +20,7 @@ import copy import os import pkgutil +import tempfile import types import typing import warnings @@ -1147,12 +1148,13 @@ def download_file(self, file_name: str, target_directory: str) -> None: contents = self.execute(Command.DOWNLOAD_FILE, {"name": file_name})["value"]["contents"] - target_file = os.path.join(target_directory, file_name) - with open(target_file, "wb") as file: - file.write(base64.b64decode(contents)) + with tempfile.TemporaryDirectory() as tmp_dir: + zip_file = os.path.join(tmp_dir, file_name + ".zip") + with open(zip_file, "wb") as file: + file.write(base64.b64decode(contents)) - with zipfile.ZipFile(target_file, "r") as zip_ref: - zip_ref.extractall(target_directory) + with zipfile.ZipFile(zip_file, "r") as zip_ref: + zip_ref.extractall(target_directory) def delete_downloadable_files(self) -> None: """Deletes all downloadable files."""