From 0d9e27620ff326ee1dc61162db3464e98c3724ea Mon Sep 17 00:00:00 2001 From: Michael Mintz Date: Tue, 15 Sep 2020 17:17:18 -0400 Subject: [PATCH 1/5] Prevent download prompts from appearing --- seleniumbase/core/browser_launcher.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/seleniumbase/core/browser_launcher.py b/seleniumbase/core/browser_launcher.py index 8f28adf8f97..dc87d1a046e 100755 --- a/seleniumbase/core/browser_launcher.py +++ b/seleniumbase/core/browser_launcher.py @@ -145,7 +145,8 @@ def _set_chrome_options( "safebrowsing.enabled": False, "safebrowsing.disable_download_protection": True, "profile": { - "password_manager_enabled": False + "password_manager_enabled": False, + "default_content_setting_values.automatic_downloads": 1 } } if locale_code: @@ -349,11 +350,14 @@ def _create_firefox_profile( "browser.download.animateNotifications", False) profile.set_preference("browser.download.dir", downloads_path) profile.set_preference("browser.download.folderList", 2) + profile.set_preference("browser.helperApps.alwaysAsk.force", False) + profile.set_preference( + "browser.download.manager.showWhenStarting", False) profile.set_preference( "browser.helperApps.neverAsk.saveToDisk", ("application/pdf, application/zip, application/octet-stream, " "text/csv, text/xml, application/xml, text/plain, " - "text/octet-stream, " + "text/octet-stream, application/x-gzip, application/x-tar " "application/" "vnd.openxmlformats-officedocument.spreadsheetml.sheet")) return profile @@ -761,7 +765,8 @@ def get_local_driver( "safebrowsing.enabled": False, "safebrowsing.disable_download_protection": True, "profile": { - "password_manager_enabled": False + "password_manager_enabled": False, + "default_content_setting_values.automatic_downloads": 1 } } if locale_code: From a028f9ff1d0969c464a4b1d9f02640da0ebc18fc Mon Sep 17 00:00:00 2001 From: Michael Mintz Date: Tue, 15 Sep 2020 17:17:53 -0400 Subject: [PATCH 2/5] Update the default timeout for asserting downloaded files --- seleniumbase/fixtures/base_case.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/seleniumbase/fixtures/base_case.py b/seleniumbase/fixtures/base_case.py index 42ed5dcf8f5..7c1b62244aa 100755 --- a/seleniumbase/fixtures/base_case.py +++ b/seleniumbase/fixtures/base_case.py @@ -2853,8 +2853,8 @@ def is_downloaded_file_present(self, file): def assert_downloaded_file(self, file, timeout=None): """ Asserts that the file exists in the Downloads Folder. """ if not timeout: - timeout = settings.SMALL_TIMEOUT - if self.timeout_multiplier and timeout == settings.SMALL_TIMEOUT: + timeout = settings.LARGE_TIMEOUT + if self.timeout_multiplier and timeout == settings.LARGE_TIMEOUT: timeout = self.__get_new_timeout(timeout) start_ms = time.time() * 1000.0 stop_ms = start_ms + (timeout * 1000.0) From 5e3f3b83974c4826cddcfdb73f2d4eb4abe2aca1 Mon Sep 17 00:00:00 2001 From: Michael Mintz Date: Tue, 15 Sep 2020 17:18:17 -0400 Subject: [PATCH 3/5] Add test for asserting downloaded files --- examples/test_download_files.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 examples/test_download_files.py diff --git a/examples/test_download_files.py b/examples/test_download_files.py new file mode 100644 index 00000000000..08b9b092567 --- /dev/null +++ b/examples/test_download_files.py @@ -0,0 +1,15 @@ +from seleniumbase import BaseCase + + +class DownloadTests(BaseCase): + + def test_download_files(self): + self.open("https://pypi.org/project/seleniumbase/#files") + pkg_header = self.get_text("h1.package-header__name") + pkg_name = pkg_header.replace(" ", "-") + whl_file = pkg_name + "-py2.py3-none-any.whl" + self.click('div#files a[href$="%s"]' % whl_file) + self.assert_downloaded_file(whl_file) + tar_gz_file = pkg_name + ".tar.gz" + self.click('div#files a[href$="%s"]' % tar_gz_file) + self.assert_downloaded_file(tar_gz_file) From 44900ce9ed6312a31180e1f8f6e824253403a80f Mon Sep 17 00:00:00 2001 From: Michael Mintz Date: Tue, 15 Sep 2020 17:18:43 -0400 Subject: [PATCH 4/5] Update the Python requirements --- requirements.txt | 4 ++-- setup.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/requirements.txt b/requirements.txt index 1d0aebb6cde..ec6e868f53d 100755 --- a/requirements.txt +++ b/requirements.txt @@ -54,12 +54,12 @@ ipython==7.16.1;python_version>="3.6" and python_version<"3.7" ipython==7.18.1;python_version>="3.7" colorama==0.4.3 pymysql==0.10.1 -coverage==5.2.1 +coverage==5.3 brython==3.8.10 pyotp==2.4.0 boto==2.49.0 cffi==1.14.2 -rich==6.1.2;python_version>="3.6" and python_version<"4.0" +rich==6.2.0;python_version>="3.6" and python_version<"4.0" flake8==3.7.9;python_version<"3.5" flake8==3.8.3;python_version>="3.5" pyflakes==2.1.1;python_version<"3.5" diff --git a/setup.py b/setup.py index 50da14ebd2f..1c84a605bd1 100755 --- a/setup.py +++ b/setup.py @@ -146,12 +146,12 @@ 'ipython==7.18.1;python_version>="3.7"', 'colorama==0.4.3', 'pymysql==0.10.1', - 'coverage==5.2.1', + 'coverage==5.3', 'brython==3.8.10', 'pyotp==2.4.0', 'boto==2.49.0', 'cffi==1.14.2', - 'rich==6.1.2;python_version>="3.6" and python_version<"4.0"', + 'rich==6.2.0;python_version>="3.6" and python_version<"4.0"', 'flake8==3.7.9;python_version<"3.5"', 'flake8==3.8.3;python_version>="3.5"', 'pyflakes==2.1.1;python_version<"3.5"', From e06009002951b8c99a050248f11d3176c8ba3348 Mon Sep 17 00:00:00 2001 From: Michael Mintz Date: Tue, 15 Sep 2020 17:19:17 -0400 Subject: [PATCH 5/5] Version 1.49.13 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 1c84a605bd1..4d79561f414 100755 --- a/setup.py +++ b/setup.py @@ -54,7 +54,7 @@ setup( name='seleniumbase', - version='1.49.12', + version='1.49.13', description='Web Automation and Test Framework - https://seleniumbase.io', long_description=long_description, long_description_content_type='text/markdown',