diff --git a/examples/boilerplates/samples/google_test.py b/examples/boilerplates/samples/google_test.py index 56d74a56838..f9ffad8b471 100644 --- a/examples/boilerplates/samples/google_test.py +++ b/examples/boilerplates/samples/google_test.py @@ -6,9 +6,9 @@ class GoogleTests(BaseCase): def test_google_dot_com(self): self.open("https://google.com/ncr") - self.sleep(0.5) + self.sleep(0.4) self.save_screenshot_to_logs() # ("./latest_logs" folder) - self.sleep(0.5) + self.sleep(0.2) self.type(HomePage.search_box, "github.com") self.assert_element(HomePage.search_button) self.assert_element(HomePage.feeling_lucky_button) diff --git a/examples/boilerplates/samples/test_page_objects.py b/examples/boilerplates/samples/test_page_objects.py index a1fb563d7bc..a4d812b1117 100644 --- a/examples/boilerplates/samples/test_page_objects.py +++ b/examples/boilerplates/samples/test_page_objects.py @@ -6,9 +6,9 @@ class GooglePage: def go_to_google(self, sb): sb.open("https://google.com/ncr") - sb.sleep(0.2) - sb.hide_elements('iframe[name="callout"]') # Hide "Sign in" pop-up sb.sleep(0.1) + sb.hide_elements('iframe') # Hide "Sign in" pop-up + sb.sleep(0.2) def do_search(self, sb, search_term): sb.click('[title="Search"]') diff --git a/examples/old_wordle_script.py b/examples/old_wordle_script.py index 97dcb6e8359..98530d2adaa 100644 --- a/examples/old_wordle_script.py +++ b/examples/old_wordle_script.py @@ -17,7 +17,7 @@ class WordleTests(BaseCase): def initialize_word_list(self): txt_file = "https://seleniumbase.github.io/cdn/txt/wordle_words.txt" - word_string = requests.get(txt_file).text + word_string = requests.get(txt_file, timeout=3).text self.word_list = ast.literal_eval(word_string) def modify_word_list(self, word, letter_status): diff --git a/examples/wordle_test.py b/examples/wordle_test.py index a471e5748c9..ef22cfe8792 100644 --- a/examples/wordle_test.py +++ b/examples/wordle_test.py @@ -10,7 +10,7 @@ class WordleTests(BaseCase): def initialize_word_list(self): txt_file = "https://seleniumbase.github.io/cdn/txt/wordle_words.txt" - word_string = requests.get(txt_file).text + word_string = requests.get(txt_file, timeout=3).text self.word_list = ast.literal_eval(word_string) def modify_word_list(self, word, letter_status): diff --git a/requirements.txt b/requirements.txt index 275d54a0ed4..d0bc14091c8 100755 --- a/requirements.txt +++ b/requirements.txt @@ -3,7 +3,8 @@ pip>=23.2.1;python_version>="3.7" packaging>=21.3;python_version<"3.7" packaging>=23.1;python_version>="3.7" setuptools>=59.6.0;python_version<"3.7" -setuptools>=68.0.0;python_version>="3.7" +setuptools>=68.0.0;python_version>="3.7" and python_version<"3.8" +setuptools>=68.1.0;python_version>="3.8" wheel>=0.37.1;python_version<"3.7" wheel>=0.41.1;python_version>="3.7" attrs==22.1.0;python_version<"3.7" diff --git a/seleniumbase/__version__.py b/seleniumbase/__version__.py index 11d7b0eb8b4..f9807920186 100755 --- a/seleniumbase/__version__.py +++ b/seleniumbase/__version__.py @@ -1,2 +1,2 @@ # seleniumbase package -__version__ = "4.17.5" +__version__ = "4.17.6" diff --git a/seleniumbase/console_scripts/sb_install.py b/seleniumbase/console_scripts/sb_install.py index e3cf0ac0d50..fee97ce1420 100644 --- a/seleniumbase/console_scripts/sb_install.py +++ b/seleniumbase/console_scripts/sb_install.py @@ -90,24 +90,13 @@ def make_executable(file_path): os.chmod(file_path, mode) -def requests_get(url): - response = None - try: - response = requests.get(url) - except Exception: - # Prevent SSLCertVerificationError / CERTIFICATE_VERIFY_FAILED - url = url.replace("https://", "http://") - response = requests.get(url) - return response - - -def requests_get_with_retry(url): +def get_proxy_info(): use_proxy = None protocol = "http" + proxy_string = None user_and_pass = None if " --proxy=" in " ".join(sys.argv): from seleniumbase.core import proxy_helper - for arg in sys.argv: if arg.startswith("--proxy="): proxy_string = arg.split("--proxy=")[1] @@ -133,30 +122,41 @@ def requests_get_with_retry(url): proxy_string = "%s@%s" % (user_and_pass, proxy_string) use_proxy = True break + return (use_proxy, protocol, proxy_string) + + +def requests_get(url): + use_proxy, protocol, proxy_string = get_proxy_info() + proxies = None response = None if use_proxy: proxies = {protocol: proxy_string} + try: + response = requests.get(url, proxies=proxies, timeout=3) + except Exception: + # Prevent SSLCertVerificationError / CERTIFICATE_VERIFY_FAILED + url = url.replace("https://", "http://") + time.sleep(0.04) + response = requests.get(url, proxies=proxies, timeout=4) + return response + + +def requests_get_with_retry(url): + use_proxy, protocol, proxy_string = get_proxy_info() + proxies = None + response = None + if use_proxy: + proxies = {protocol: proxy_string} + try: + response = requests.get(url, proxies=proxies, timeout=3) + except Exception: + time.sleep(1) try: - response = requests.get(url, proxies=proxies) - except Exception: - time.sleep(1.1) - try: - response = requests.get(url, proxies=proxies) - except Exception: - time.sleep(1.2) - response = requests.get(url, proxies=proxies) - return response - else: - try: - response = requests.get(url) + response = requests.get(url, proxies=proxies, timeout=4) except Exception: - time.sleep(1.1) - try: - response = requests.get(url) - except Exception: - time.sleep(1.2) - response = requests.get(url) - return response + time.sleep(1) + response = requests.get(url, proxies=proxies, timeout=4) + return response def main(override=None, intel_for_uc=None): diff --git a/seleniumbase/core/browser_launcher.py b/seleniumbase/core/browser_launcher.py index c202d22160f..8e1442a1394 100644 --- a/seleniumbase/core/browser_launcher.py +++ b/seleniumbase/core/browser_launcher.py @@ -111,20 +111,20 @@ def requests_get(url, proxy_string=None): if proxy_string: proxies = {protocol: proxy_string} try: - response = requests.get(url, proxies=proxies) + response = requests.get(url, proxies=proxies, timeout=3) except Exception: # Prevent SSLCertVerificationError / CERTIFICATE_VERIFY_FAILED url = url.replace("https://", "http://") time.sleep(0.04) - response = requests.get(url, proxies=proxies) + response = requests.get(url, proxies=proxies, timeout=4) else: try: - response = requests.get(url) + response = requests.get(url, timeout=3) except Exception: # Prevent SSLCertVerificationError / CERTIFICATE_VERIFY_FAILED url = url.replace("https://", "http://") time.sleep(0.04) - response = requests.get(url) + response = requests.get(url, timeout=4) return response diff --git a/seleniumbase/fixtures/js_utils.py b/seleniumbase/fixtures/js_utils.py index c0502422215..c2ae3a217d3 100644 --- a/seleniumbase/fixtures/js_utils.py +++ b/seleniumbase/fixtures/js_utils.py @@ -531,7 +531,7 @@ def add_css_style(driver, css_style): def add_js_code_from_link(driver, js_link): if js_link.startswith("//"): js_link = "http:" + js_link - js_code = requests.get(js_link).text + js_code = requests.get(js_link, timeout=5).text add_js_code_script = ( """var body_tag=document.getElementsByTagName('body').item(0);""" """var script_tag=document.createElement("script");""" diff --git a/seleniumbase/fixtures/page_utils.py b/seleniumbase/fixtures/page_utils.py index 599b66ce828..80febfb1719 100644 --- a/seleniumbase/fixtures/page_utils.py +++ b/seleniumbase/fixtures/page_utils.py @@ -245,7 +245,7 @@ def _download_file_to(file_url, destination_folder, new_file_name=None): file_name = new_file_name else: file_name = file_url.split("/")[-1] - r = requests.get(file_url) + r = requests.get(file_url, timeout=5) file_path = os.path.join(destination_folder, file_name) download_file_lock = fasteners.InterProcessLock( constants.MultiBrowser.DOWNLOAD_FILE_LOCK diff --git a/seleniumbase/undetected/__init__.py b/seleniumbase/undetected/__init__.py index 0e2ccf24fd1..34ae3ba8ca2 100644 --- a/seleniumbase/undetected/__init__.py +++ b/seleniumbase/undetected/__init__.py @@ -143,7 +143,7 @@ def __init__( special_port_free = False # If the port isn't free, don't use 9222 try: - res = requests.get("http://127.0.0.1:9222") + res = requests.get("http://127.0.0.1:9222", timeout=1) if res.status_code != 200: raise Exception("The port is free! It will be used!") except Exception: diff --git a/setup.py b/setup.py index 41104539ad4..7da629deb05 100755 --- a/setup.py +++ b/setup.py @@ -137,7 +137,8 @@ 'packaging>=21.3;python_version<"3.7"', 'packaging>=23.1;python_version>="3.7"', 'setuptools>=59.6.0;python_version<"3.7"', - 'setuptools>=68.0.0;python_version>="3.7"', + 'setuptools>=68.0.0;python_version>="3.7" and python_version<"3.8"', + 'setuptools>=68.1.0;python_version>="3.8"', 'wheel>=0.37.1;python_version<"3.7"', 'wheel>=0.41.1;python_version>="3.7"', 'attrs==22.1.0;python_version<"3.7"',