📊 APIs for web automation, testing, and bypassing bot-detection.
This report presents the forensic synthetic code analysis of seleniumbase/SeleniumBase, a Python project with 12,861 GitHub stars. SynthScan v2.0 examined 98,089 lines of code across 709 source files, recording 1195 pattern matches distributed across 18 syntactic categories. The overall adjusted score of 21.1 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 1195 distinct pattern matches across 18 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | seleniumbase/core/tour_helper.py | 958 | """script.onload = function() { null };""" | STRING |
| HIGH | seleniumbase/core/sb_cdp.py | 1502 | self.page.evaluate("navigator.language || navigator.languages[0]") | CODE |
| HIGH | seleniumbase/console_scripts/run.py | 592 | print(" seleniumbase encrypt || seleniumbase obfuscate") | CODE |
| HIGH | seleniumbase/console_scripts/run.py | 594 | print(" sbase encrypt || sbase obfuscate") | CODE |
| HIGH | seleniumbase/console_scripts/run.py | 609 | print(" seleniumbase decrypt || seleniumbase unobfuscate") | CODE |
| HIGH | seleniumbase/console_scripts/run.py | 611 | print(" sbase decrypt || sbase unobfuscate") | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 131 | non_id_attributes.push('name'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 132 | non_id_attributes.push('data-qa'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 133 | non_id_attributes.push('data-tid'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 134 | non_id_attributes.push('data-el'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 135 | non_id_attributes.push('data-se'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 136 | non_id_attributes.push('data-name'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 137 | non_id_attributes.push('data-auto'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 138 | non_id_attributes.push('data-text'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 139 | non_id_attributes.push('data-test'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 140 | non_id_attributes.push('data-testid'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 141 | non_id_attributes.push('data-test-id'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 142 | non_id_attributes.push('data-test-selector'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 143 | non_id_attributes.push('data-nav'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 144 | non_id_attributes.push('data-sb'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 145 | non_id_attributes.push('data-cy'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 146 | non_id_attributes.push('data-action'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 147 | non_id_attributes.push('data-target'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 148 | non_id_attributes.push('data-tooltip'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 149 | non_id_attributes.push('alt'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 150 | non_id_attributes.push('title'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 151 | non_id_attributes.push('heading'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 152 | non_id_attributes.push('translate'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 153 | non_id_attributes.push('aria-label'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 154 | non_id_attributes.push('aria-describedby'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 155 | non_id_attributes.push('rel'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 156 | non_id_attributes.push('ng-model'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 157 | non_id_attributes.push('ng-href'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 158 | non_id_attributes.push('href'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 159 | non_id_attributes.push('label'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 160 | non_id_attributes.push('data-content'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 161 | non_id_attributes.push('data-tip'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 162 | non_id_attributes.push('data-for'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 163 | non_id_attributes.push('class'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 164 | non_id_attributes.push('for'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 165 | non_id_attributes.push('placeholder'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 166 | non_id_attributes.push('value'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 167 | non_id_attributes.push('ng-click'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 168 | non_id_attributes.push('ng-if'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 169 | non_id_attributes.push('src'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 176 | selector_by_attr[i] = null; | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 191 | basic_tags.push('h1'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 192 | basic_tags.push('h2'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 193 | basic_tags.push('h3'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 194 | basic_tags.push('canvas'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 195 | basic_tags.push('center'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 196 | basic_tags.push('input'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 197 | basic_tags.push('textarea'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 200 | if (tag_name == basic_tags[i] && d_qsa.length == 1 && el == d_qsa[0]) | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 204 | contains_tags.push('a'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 205 | contains_tags.push('b'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 206 | contains_tags.push('h1'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 207 | contains_tags.push('h2'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 208 | contains_tags.push('h3'); | CODE |
| HIGH⚡ | seleniumbase/js_code/recorder_js.py | 209 | contains_tags.push('h4'); | CODE |
| 149 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | README.md | 965 | def test_find_army_of_robots_on_xkcd_desert_island(self): | CODE |
| LOW | README.md | 1297 | def is_there_a_cloaked_klingon_ship_on_this_page(): | CODE |
| LOW | README.md | 1315 | def get_mirror_universe_captain_picard_superbowl_ad(superbowl_year): | CODE |
| LOW | seleniumbase/core/jqc_helper.py | 17 | def jquery_confirm_button_dialog(driver, message, buttons, options=None): | CODE |
| LOW | seleniumbase/core/jqc_helper.py | 111 | def jquery_confirm_text_dialog(driver, message, button=None, options=None): | CODE |
| LOW | seleniumbase/core/jqc_helper.py | 200 | def jquery_confirm_full_dialog(driver, message, buttons, options=None): | CODE |
| LOW | seleniumbase/core/application_manager.py | 8 | def generate_application_string(cls, test): | CODE |
| LOW | seleniumbase/core/session_helper.py | 4 | def end_reused_class_session_as_needed(): | CODE |
| LOW | seleniumbase/core/download_helper.py | 55 | def reset_downloads_folder_assistant(archived_downloads_folder): | CODE |
| LOW⚡ | seleniumbase/core/sb_cdp.py | 1927 | def __make_sure_pyautogui_lock_is_writable(self): | CODE |
| LOW⚡ | seleniumbase/core/sb_cdp.py | 1931 | def __verify_pyautogui_has_a_headed_browser(self): | CODE |
| LOW⚡ | seleniumbase/core/sb_cdp.py | 2209 | def _on_an_incapsula_hcaptcha_page(self, *args, **kwargs): | CODE |
| LOW⚡ | seleniumbase/core/sb_cdp.py | 2218 | def _on_a_datadome_slider_page(self, *args, **kwargs): | CODE |
| LOW⚡ | seleniumbase/core/sb_cdp.py | 2228 | def _on_a_friendly_captcha_page(self, *args, **kwargs): | CODE |
| LOW | seleniumbase/core/sb_cdp.py | 62 | def __convert_to_css_if_xpath(self, selector): | CODE |
| LOW | seleniumbase/core/sb_cdp.py | 505 | def click_nth_visible_element(self, selector, number, scroll=True): | CODE |
| LOW | seleniumbase/core/sb_cdp.py | 616 | def __mouse_click_with_offset_async(self, element, *args, **kwargs): | CODE |
| LOW | seleniumbase/core/sb_cdp.py | 857 | def bring_active_window_to_front(self): | CODE |
| LOW | seleniumbase/core/sb_cdp.py | 1852 | def get_path_of_downloaded_file(self, file): | CODE |
| LOW | seleniumbase/core/sb_cdp.py | 1942 | def __install_pyautogui_if_missing(self): | CODE |
| LOW | seleniumbase/core/sb_cdp.py | 2014 | def __get_configured_pyautogui(self, pyautogui_copy): | CODE |
| LOW | seleniumbase/core/sb_cdp.py | 2307 | def __gui_slide_datadome_captcha(self): | CODE |
| LOW | seleniumbase/core/sb_cdp.py | 2333 | def __cdp_click_incapsula_hcaptcha(self, use_cdp=True): | CODE |
| LOW | seleniumbase/core/sb_cdp.py | 2382 | def __gui_click_friendly_captcha(self, use_cdp=False): | CODE |
| LOW | seleniumbase/core/sb_cdp.py | 2986 | def wait_for_text_not_visible(self, text, selector="body", timeout=None): | CODE |
| LOW | seleniumbase/core/sb_cdp.py | 3033 | def wait_for_element_not_visible(self, selector, timeout=None): | CODE |
| LOW | seleniumbase/core/sb_cdp.py | 3077 | def wait_for_any_of_elements_visible(self, *args, **kwargs): | CODE |
| LOW | seleniumbase/core/sb_cdp.py | 3149 | def wait_for_any_of_elements_present(self, *args, **kwargs): | CODE |
| LOW | seleniumbase/core/sb_cdp.py | 3211 | def assert_any_of_elements_visible(self, *args, **kwargs): | CODE |
| LOW | seleniumbase/core/sb_cdp.py | 3216 | def assert_any_of_elements_present(self, *args, **kwargs): | CODE |
| LOW | seleniumbase/core/sb_cdp.py | 3273 | def assert_element_not_visible(self, selector, timeout=None): | CODE |
| LOW | seleniumbase/core/sb_cdp.py | 3692 | def __create_log_path_as_needed(self, script_logpath): | CODE |
| LOW⚡ | seleniumbase/core/browser_launcher.py | 2276 | def _add_chrome_disable_csp_extension(chrome_options): | CODE |
| LOW⚡ | seleniumbase/core/browser_launcher.py | 2283 | def _add_chrome_ad_block_extension(chrome_options): | CODE |
| LOW⚡ | seleniumbase/core/browser_launcher.py | 2290 | def _add_chrome_recorder_extension(chrome_options): | CODE |
| LOW | seleniumbase/core/browser_launcher.py | 145 | def make_driver_executable_if_not(driver_path): | CODE |
| LOW | seleniumbase/core/browser_launcher.py | 359 | def get_latest_chromedriver_version(): | CODE |
| LOW | seleniumbase/core/browser_launcher.py | 403 | def find_chromedriver_version_to_use(use_version, driver_version): | CODE |
| LOW | seleniumbase/core/browser_launcher.py | 436 | def find_edgedriver_version_to_use(use_version, driver_version): | CODE |
| LOW | seleniumbase/core/browser_launcher.py | 1071 | def verify_pyautogui_has_a_headed_browser(driver): | CODE |
| LOW | seleniumbase/core/browser_launcher.py | 1080 | def __install_pyautogui_if_missing(): | CODE |
| LOW | seleniumbase/core/browser_launcher.py | 1146 | def install_pyautogui_if_missing(driver): | CODE |
| LOW | seleniumbase/core/browser_launcher.py | 2028 | def headless_iedriver_on_path(): | CODE |
| LOW | seleniumbase/core/browser_launcher.py | 2032 | def get_valid_binary_names_for_browser(browser): | CODE |
| LOW | seleniumbase/core/browser_launcher.py | 2152 | def _add_chrome_proxy_extension( | CODE |
| LOW | seleniumbase/core/report_helper.py | 134 | def clear_out_old_report_logs(archive_past_runs=True, get_log_folder=False): | CODE |
| LOW | seleniumbase/core/detect_b_ver.py | 94 | def linux_browser_apps_to_cmd(*apps): | CODE |
| LOW | seleniumbase/core/detect_b_ver.py | 414 | def windows_browser_apps_to_cmd(*apps): | CODE |
| LOW | seleniumbase/core/detect_b_ver.py | 473 | def get_browser_version_from_binary(binary_location): | CODE |
| LOW | seleniumbase/core/detect_b_ver.py | 501 | def get_browser_version_from_os(browser_type): | CODE |
| LOW⚡ | seleniumbase/core/visual_helper.py | 10 | def get_visual_baseline_folder(): | CODE |
| LOW⚡ | seleniumbase/core/visual_helper.py | 14 | def visual_baseline_folder_setup(): | CODE |
| LOW | seleniumbase/core/sb_driver.py | 158 | def assert_element_not_visible(self, *args, **kwargs): | CODE |
| LOW | seleniumbase/core/sb_driver.py | 191 | def wait_for_element_not_visible(self, *args, **kwargs): | CODE |
| LOW⚡ | seleniumbase/core/sb_driver.py | 210 | def wait_for_text_not_visible(self, *args, **kwargs): | CODE |
| LOW⚡ | seleniumbase/core/sb_driver.py | 215 | def wait_for_and_accept_alert(self, *args, **kwargs): | CODE |
| LOW⚡ | seleniumbase/core/sb_driver.py | 220 | def wait_for_and_dismiss_alert(self, *args, **kwargs): | CODE |
| LOW | seleniumbase/core/sb_driver.py | 240 | def is_non_empty_text_visible(self, *args, **kwargs): | CODE |
| LOW | seleniumbase/core/proxy_helper.py | 157 | def remove_proxy_zip_if_present(): | CODE |
| LOW | seleniumbase/core/log_helper.py | 105 | def get_driver_name_and_version(driver, browser): | CODE |
| 277 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | seleniumbase/core/recorder_helper.py | 13 | except Exception: | CODE |
| LOW | seleniumbase/core/recorder_helper.py | 29 | except Exception: | CODE |
| LOW | seleniumbase/core/recorder_helper.py | 430 | except Exception: | CODE |
| LOW | seleniumbase/core/session_helper.py | 15 | except Exception: | CODE |
| LOW | seleniumbase/core/download_helper.py | 59 | except Exception: | CODE |
| LOW | seleniumbase/core/download_helper.py | 70 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 43 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 55 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 297 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 311 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 315 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 329 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 344 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 368 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 382 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 398 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 444 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 459 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 463 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 475 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 496 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 545 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 577 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 590 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 606 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 629 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 680 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 695 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 699 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 719 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 729 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 745 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 766 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 828 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 853 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 863 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 874 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 882 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 903 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 1135 | except Exception: | CODE |
| LOW | seleniumbase/core/tour_helper.py | 87 | except Exception: | STRING |
| LOW | seleniumbase/core/tour_helper.py | 99 | except Exception: | STRING |
| LOW | seleniumbase/core/tour_helper.py | 131 | except Exception: | STRING |
| LOW | seleniumbase/core/tour_helper.py | 143 | except Exception: | STRING |
| LOW | seleniumbase/core/tour_helper.py | 184 | except Exception: | STRING |
| LOW | seleniumbase/core/tour_helper.py | 196 | except Exception: | STRING |
| LOW | seleniumbase/core/tour_helper.py | 243 | except Exception: | STRING |
| LOW | seleniumbase/core/tour_helper.py | 253 | except Exception: | STRING |
| MEDIUM | seleniumbase/core/sb_cdp.py | 737 | def __get_attribute(self, element, attribute): | CODE |
| MEDIUM | seleniumbase/core/sb_cdp.py | 1251 | def maximize(self): | CODE |
| MEDIUM | seleniumbase/core/sb_cdp.py | 1907 | def is_attribute_present(self, selector, attribute, value=None): | CODE |
| MEDIUM | seleniumbase/core/sb_cdp.py | 2803 | def gui_hover_element(self, selector, timeframe=0.27): | CODE |
| MEDIUM | seleniumbase/core/sb_cdp.py | 2891 | def is_element_present(self, selector): | CODE |
| LOW⚡ | seleniumbase/core/sb_cdp.py | 1920 | except Exception: | CODE |
| LOW⚡ | seleniumbase/core/sb_cdp.py | 2895 | except Exception: | CODE |
| LOW⚡ | seleniumbase/core/sb_cdp.py | 2904 | except Exception: | CODE |
| LOW⚡ | seleniumbase/core/sb_cdp.py | 2911 | except Exception: | CODE |
| LOW | seleniumbase/core/sb_cdp.py | 166 | except Exception: | CODE |
| LOW | seleniumbase/core/sb_cdp.py | 317 | except Exception: | CODE |
| LOW | seleniumbase/core/sb_cdp.py | 344 | except Exception: | CODE |
| 278 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | seleniumbase/core/jqc_helper.py | 17 | CODE | |
| LOW | seleniumbase/core/jqc_helper.py | 111 | CODE | |
| LOW | seleniumbase/core/jqc_helper.py | 200 | CODE | |
| LOW | seleniumbase/core/recorder_helper.py | 4 | CODE | |
| LOW | seleniumbase/core/settings_parser.py | 5 | CODE | |
| LOW | seleniumbase/core/tour_helper.py | 257 | CODE | |
| LOW | seleniumbase/core/tour_helper.py | 403 | CODE | |
| LOW | seleniumbase/core/tour_helper.py | 501 | CODE | |
| LOW | seleniumbase/core/tour_helper.py | 634 | CODE | |
| LOW | seleniumbase/core/tour_helper.py | 771 | CODE | |
| LOW | seleniumbase/core/tour_helper.py | 908 | CODE | |
| LOW | seleniumbase/core/sb_cdp.py | 378 | CODE | |
| LOW | seleniumbase/core/sb_cdp.py | 873 | CODE | |
| LOW | seleniumbase/core/sb_cdp.py | 917 | CODE | |
| LOW | seleniumbase/core/sb_cdp.py | 929 | CODE | |
| LOW | seleniumbase/core/sb_cdp.py | 1323 | CODE | |
| LOW | seleniumbase/core/sb_cdp.py | 1942 | CODE | |
| LOW | seleniumbase/core/sb_cdp.py | 2333 | CODE | |
| LOW | seleniumbase/core/sb_cdp.py | 2443 | CODE | |
| LOW | seleniumbase/core/sb_cdp.py | 2752 | CODE | |
| LOW | seleniumbase/core/sb_cdp.py | 3077 | CODE | |
| LOW | seleniumbase/core/sb_cdp.py | 3149 | CODE | |
| LOW | seleniumbase/core/browser_launcher.py | 153 | CODE | |
| LOW | seleniumbase/core/browser_launcher.py | 333 | CODE | |
| LOW | seleniumbase/core/browser_launcher.py | 380 | CODE | |
| LOW | seleniumbase/core/browser_launcher.py | 403 | CODE | |
| LOW | seleniumbase/core/browser_launcher.py | 484 | CODE | |
| LOW | seleniumbase/core/browser_launcher.py | 639 | CODE | |
| LOW | seleniumbase/core/browser_launcher.py | 1080 | CODE | |
| LOW | seleniumbase/core/browser_launcher.py | 1264 | CODE | |
| LOW | seleniumbase/core/browser_launcher.py | 1349 | CODE | |
| LOW | seleniumbase/core/browser_launcher.py | 1769 | CODE | |
| LOW | seleniumbase/core/browser_launcher.py | 2032 | CODE | |
| LOW | seleniumbase/core/browser_launcher.py | 2152 | CODE | |
| LOW | seleniumbase/core/browser_launcher.py | 2297 | CODE | |
| LOW | seleniumbase/core/browser_launcher.py | 2870 | CODE | |
| LOW | seleniumbase/core/browser_launcher.py | 3042 | CODE | |
| LOW | seleniumbase/core/browser_launcher.py | 3644 | CODE | |
| LOW | seleniumbase/core/browser_launcher.py | 4055 | CODE | |
| LOW | seleniumbase/core/detect_b_ver.py | 103 | CODE | |
| LOW | seleniumbase/core/proxy_helper.py | 170 | CODE | |
| LOW | seleniumbase/core/log_helper.py | 105 | CODE | |
| LOW | seleniumbase/core/log_helper.py | 124 | CODE | |
| LOW | seleniumbase/core/log_helper.py | 391 | CODE | |
| LOW | seleniumbase/core/log_helper.py | 515 | CODE | |
| LOW | seleniumbase/core/log_helper.py | 543 | CODE | |
| LOW | seleniumbase/core/nest_asyncio.py | 91 | CODE | |
| LOW | seleniumbase/core/nest_asyncio.py | 142 | CODE | |
| LOW | seleniumbase/core/nest_asyncio.py | 52 | CODE | |
| LOW | seleniumbase/core/nest_asyncio.py | 166 | CODE | |
| LOW | seleniumbase/core/nest_asyncio.py | 210 | CODE | |
| LOW | seleniumbase/translate/translator.py | 103 | CODE | |
| LOW | seleniumbase/translate/translator.py | 268 | CODE | |
| LOW | seleniumbase/plugins/driver_manager.py | 67 | CODE | |
| LOW | seleniumbase/plugins/sb_manager.py | 33 | CODE | |
| LOW | seleniumbase/plugins/base_plugin.py | 219 | CODE | |
| LOW | seleniumbase/plugins/base_plugin.py | 364 | CODE | |
| LOW | seleniumbase/plugins/pytest_plugin.py | 1683 | CODE | |
| LOW | seleniumbase/plugins/pytest_plugin.py | 2148 | CODE | |
| LOW | seleniumbase/plugins/pytest_plugin.py | 2215 | CODE | |
| 74 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | seleniumbase/core/sb_cdp.py | 0 | var $elements = document.queryselectorall( 'form[class], form div[class]'); var index = 0, length = $elements.length; fo | STRING |
| HIGH | seleniumbase/core/browser_launcher.py | 0 | var $elements = document.queryselectorall( 'form[class], form div[class]'); var index = 0, length = $elements.length; fo | STRING |
| HIGH | seleniumbase/undetected/cdp_driver/tab.py | 0 | var $elements = document.queryselectorall( 'form[class], form div[class]'); var index = 0, length = $elements.length; fo | STRING |
| HIGH | seleniumbase/core/sb_cdp.py | 0 | var $elements = document.queryselectorall( 'form[style], form div[style]'); var index = 0, length = $elements.length; fo | STRING |
| HIGH | seleniumbase/core/browser_launcher.py | 0 | var $elements = document.queryselectorall( 'form[style], form div[style]'); var index = 0, length = $elements.length; fo | STRING |
| HIGH | seleniumbase/undetected/cdp_driver/tab.py | 0 | var $elements = document.queryselectorall( 'form[style], form div[style]'); var index = 0, length = $elements.length; fo | STRING |
| HIGH | seleniumbase/core/sb_cdp.py | 0 | var $elements = document.queryselectorall( 'form [id*="turnstile"]'); var index = 0, length = $elements.length; for(; in | STRING |
| HIGH | seleniumbase/core/browser_launcher.py | 0 | var $elements = document.queryselectorall( 'form [id*="turnstile"]'); var index = 0, length = $elements.length; for(; in | STRING |
| HIGH | seleniumbase/undetected/cdp_driver/tab.py | 0 | var $elements = document.queryselectorall( 'form [id*="turnstile"]'); var index = 0, length = $elements.length; for(; in | STRING |
| HIGH | seleniumbase/core/sb_cdp.py | 0 | var $elements = document.queryselectorall( '[style*="text-align: center;"]'); var index = 0, length = $elements.length; | STRING |
| HIGH | seleniumbase/core/browser_launcher.py | 0 | var $elements = document.queryselectorall( '[style*="text-align: center;"]'); var index = 0, length = $elements.length; | STRING |
| HIGH | seleniumbase/undetected/cdp_driver/tab.py | 0 | var $elements = document.queryselectorall( '[style*="text-align: center;"]'); var index = 0, length = $elements.length; | STRING |
| HIGH | seleniumbase/core/browser_launcher.py | 0 | if the driver is disconnected, use a cdp method when available. | STRING |
| HIGH | seleniumbase/core/sb_driver.py | 0 | if the driver is disconnected, use a cdp method when available. | STRING |
| HIGH | seleniumbase/core/log_helper.py | 0 | if the driver is disconnected, use a cdp method when available. | STRING |
| HIGH | help_docs/syntax_formats.md | 0 | this method overrides get_new_driver() from basecase. | STRING |
| HIGH | examples/test_override_sb_fixture.py | 0 | this method overrides get_new_driver() from basecase. | STRING |
| HIGH | examples/test_override_driver.py | 0 | this method overrides get_new_driver() from basecase. | STRING |
| HIGH | examples/raw_uc_events.py | 0 | note: this uses plain uc mode, which was replaced by uc + cdp mode. pyautogui is installed automatically for uc_gui meth | STRING |
| HIGH | examples/uc_cdp_events.py | 0 | note: this uses plain uc mode, which was replaced by uc + cdp mode. pyautogui is installed automatically for uc_gui meth | STRING |
| HIGH | examples/raw_cdp_logging.py | 0 | note: this uses plain uc mode, which was replaced by uc + cdp mode. pyautogui is installed automatically for uc_gui meth | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 3 | CODE | |
| LOW | seleniumbase/__init__.py | 7 | CODE | |
| LOW | seleniumbase/__init__.py | 8 | CODE | |
| LOW | seleniumbase/__init__.py | 10 | CODE | |
| LOW | seleniumbase/__init__.py | 11 | CODE | |
| LOW | seleniumbase/__init__.py | 12 | CODE | |
| LOW | seleniumbase/__init__.py | 13 | CODE | |
| LOW | seleniumbase/__init__.py | 14 | CODE | |
| LOW | seleniumbase/__init__.py | 16 | CODE | |
| LOW | seleniumbase/__init__.py | 17 | CODE | |
| LOW | seleniumbase/__init__.py | 18 | CODE | |
| LOW | seleniumbase/__init__.py | 19 | CODE | |
| LOW | seleniumbase/__init__.py | 20 | CODE | |
| LOW | seleniumbase/__init__.py | 21 | CODE | |
| LOW | seleniumbase/__init__.py | 22 | CODE | |
| LOW | seleniumbase/core/mysql.py | 22 | CODE | |
| LOW | seleniumbase/translate/__init__.py | 1 | CODE | |
| LOW | seleniumbase/translate/__init__.py | 2 | CODE | |
| LOW | seleniumbase/translate/__init__.py | 3 | CODE | |
| LOW | seleniumbase/translate/__init__.py | 4 | CODE | |
| LOW | seleniumbase/translate/__init__.py | 5 | CODE | |
| LOW | seleniumbase/translate/__init__.py | 6 | CODE | |
| LOW | seleniumbase/translate/__init__.py | 7 | CODE | |
| LOW | seleniumbase/translate/__init__.py | 8 | CODE | |
| LOW | seleniumbase/translate/__init__.py | 9 | CODE | |
| LOW | seleniumbase/console_scripts/run.py | 1217 | CODE | |
| LOW | seleniumbase/behave/steps.py | 1 | CODE | |
| LOW | seleniumbase/undetected/cdp_driver/__init__.py | 1 | CODE | |
| LOW | seleniumbase/undetected/cdp_driver/__init__.py | 2 | CODE | |
| LOW | seleniumbase/undetected/cdp_driver/__init__.py | 3 | CODE | |
| LOW | seleniumbase/undetected/cdp_driver/element.py | 1 | CODE | |
| LOW | seleniumbase/undetected/cdp_driver/element.py | 12 | CODE | |
| LOW | seleniumbase/undetected/cdp_driver/element.py | 13 | CODE | |
| LOW | seleniumbase/undetected/cdp_driver/element.py | 14 | CODE | |
| LOW | seleniumbase/undetected/cdp_driver/element.py | 15 | CODE | |
| LOW | seleniumbase/undetected/cdp_driver/element.py | 16 | CODE | |
| LOW | seleniumbase/undetected/cdp_driver/browser.py | 2 | CODE | |
| LOW | seleniumbase/undetected/cdp_driver/browser.py | 6 | CODE | |
| LOW | seleniumbase/undetected/cdp_driver/connection.py | 1 | CODE | |
| LOW | seleniumbase/undetected/cdp_driver/connection.py | 26 | CODE | |
| LOW | seleniumbase/undetected/cdp_driver/connection.py | 27 | CODE | |
| LOW | seleniumbase/undetected/cdp_driver/connection.py | 28 | CODE | |
| LOW | seleniumbase/undetected/cdp_driver/connection.py | 29 | CODE | |
| LOW | seleniumbase/undetected/cdp_driver/connection.py | 30 | CODE | |
| LOW | seleniumbase/undetected/cdp_driver/connection.py | 31 | CODE | |
| LOW | seleniumbase/undetected/cdp_driver/cdp_util.py | 2 | CODE | |
| LOW | seleniumbase/undetected/cdp_driver/tab.py | 1 | CODE | |
| LOW | sbase/__init__.py | 1 | CODE | |
| LOW | sbase/__init__.py | 2 | CODE | |
| LOW | sbase/__init__.py | 3 | CODE | |
| LOW | sbase/__init__.py | 4 | CODE | |
| LOW | sbase/__init__.py | 5 | CODE | |
| LOW | sbase/__init__.py | 6 | CODE | |
| LOW | sbase/__init__.py | 7 | CODE | |
| LOW | sbase/__init__.py | 8 | CODE | |
| LOW | sbase/__init__.py | 9 | CODE | |
| LOW | sbase/__init__.py | 10 | CODE | |
| LOW | sbase/__init__.py | 11 | CODE | |
| LOW | sbase/__init__.py | 12 | CODE | |
| LOW | sbase/__init__.py | 13 | CODE | |
| 18 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | seleniumbase/undetected/__init__.py | 211 | # Create a temporary folder for the user-data profile. | COMMENT |
| MEDIUM | examples/tour_examples/driverjs_maps_tour.py | 15 | # Create a website tour using the DriverJS library | COMMENT |
| MEDIUM | examples/tour_examples/google_tour.py | 14 | # Create a website tour using the ShepherdJS library with "dark" theme | COMMENT |
| MEDIUM | examples/tour_examples/google_tour.py | 24 | # Create a website tour using the ShepherdJS library with "light" theme | COMMENT |
| MEDIUM | examples/tour_examples/google_tour.py | 35 | # Create a website tour using the Bootstrap Tour JS library | COMMENT |
| MEDIUM | examples/tour_examples/google_tour.py | 50 | # Create a website tour using the IntroJS library | COMMENT |
| MEDIUM⚡ | examples/presenter/fundamentals.py | 393 | "sbase mkdir [DIRECTORY] # Create a test directory\n" | CODE |
| MEDIUM⚡ | examples/presenter/fundamentals.py | 394 | "sbase mkfile [FILE.py] # Create a test file\n" | CODE |
| MEDIUM⚡ | examples/presenter/fundamentals.py | 397 | "sbase mkpres # Create a Presentation boilerplate\n" | CODE |
| MEDIUM⚡ | examples/presenter/fundamentals.py | 398 | "sbase mkchart # Create a Chart boilerplate\n" | CODE |
| MEDIUM | examples/presenter/py_virtual_envs.py | 126 | "# Create a virtual environment:\n" | CODE |
| MEDIUM | examples/presenter/py_virtual_envs.py | 172 | "# Create a requirements file from installed packages:\n" | CODE |
| MEDIUM⚡ | examples/presenter/edge_presentation.py | 648 | "sbase mkdir [DIRECTORY] # Create a test directory\n" | CODE |
| MEDIUM⚡ | examples/presenter/edge_presentation.py | 649 | "sbase mkfile [FILE.py] # Create a test file\n" | CODE |
| MEDIUM⚡ | examples/presenter/edge_presentation.py | 652 | "sbase mkpres # Create a Presentation boilerplate\n" | CODE |
| MEDIUM⚡ | examples/presenter/edge_presentation.py | 653 | "sbase mkchart # Create a Chart boilerplate\n" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | seleniumbase/core/create_db_tables.sql | 4 | # ----------------------------------- | COMMENT |
| MEDIUM | seleniumbase/core/create_db_tables.sql | 23 | # ----------------------------------- | COMMENT |
| MEDIUM | seleniumbase/translate/translator.py | 1001 | # ---------------------------------------- | COMMENT |
| MEDIUM | seleniumbase/translate/translator.py | 1020 | # ---------------------------------------- | COMMENT |
| MEDIUM | seleniumbase/console_scripts/sb_print.py | 588 | # ---------------------------------------- | COMMENT |
| MEDIUM | seleniumbase/console_scripts/sb_print.py | 632 | # ---------------------------------------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | azure-pipelines.yml | 81 | #- script: python -m pytest examples/test_inspect_html.py --browser=chrome --headless -v -s --junit-xml=junit/test-res | COMMENT |
| LOW | azure-pipelines.yml | 101 | # - script: python setup.py sdist | COMMENT |
| LOW | seleniumbase/core/browser_launcher.py | 3501 | # required when using a proxy server that has authentication, | COMMENT |
| LOW | seleniumbase/config/settings.py | 21 | # selenium.common.exceptions.TimeoutException: | COMMENT |
| LOW | seleniumbase/config/settings.py | 81 | COMMENT | |
| LOW | seleniumbase/config/settings.py | 101 | COMMENT | |
| LOW | seleniumbase/config/settings.py | 141 | # If True, the automation will start in full-screen mode | COMMENT |
| LOW | help_docs/method_summary.md | 561 | # self.wait_for_exact_text(text, selector="html", by="css selector", timeout=None) | COMMENT |
| LOW | help_docs/method_summary.md | 641 | COMMENT | |
| LOW | examples/custom_settings.py | 21 | COMMENT | |
| LOW | examples/custom_settings.py | 81 | # (This only affects driver downloads coming from tests.) | COMMENT |
| LOW | examples/my_first_test.py | 41 | # Here's an example of changing the "by": | COMMENT |
| LOW | examples/my_first_test.py | 61 | # useful if a web page needs additional time to load an element. | COMMENT |
| LOW | examples/my_first_test.py | 81 | # = self.wait_for_element() | COMMENT |
| LOW | examples/my_first_test.py | 101 | # self.assert_true("xkcd: volume 0" in text) | COMMENT |
| LOW | examples/my_first_test.py | 121 | # element = self.find_element("h2") | COMMENT |
| LOW | examples/my_first_test.py | 141 | # | COMMENT |
| LOW | examples/visual_testing/layout_test.py | 21 | # Now that we know the Exception was raised as expected, | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | seleniumbase/plugins/driver_manager.py | 279 | # Check if binary-location in options | COMMENT |
| LOW | seleniumbase/plugins/selenium_plugin.py | 1115 | # Check if binary-location in options | COMMENT |
| LOW | seleniumbase/plugins/sb_manager.py | 347 | # Check if binary-location in options | COMMENT |
| LOW | seleniumbase/plugins/pytest_plugin.py | 1448 | # Check if binary-location in options | COMMENT |
| LOW | seleniumbase/undetected/cdp_driver/tab.py | 529 | # Check if parent actually has a parent | COMMENT |
| LOW | seleniumbase/undetected/cdp_driver/tab.py | 612 | # Check if parent has a parent, and update it to be sure. | COMMENT |
| LOW | examples/migration/protractor/mat_paginator_test.py | 10 | # Set pagination to 5 items per page | COMMENT |
| LOW | examples/migration/protractor/mat_paginator_test.py | 23 | # Set pagination to 10 items per page | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | seleniumbase/plugins/driver_manager.py | 303 | # As a shortcut, you can use "--edge" instead of "--browser=edge", etc, | COMMENT |
| MEDIUM | seleniumbase/plugins/selenium_plugin.py | 1107 | # As a shortcut, you can use "--edge" instead of "--browser=edge", etc, | COMMENT |
| MEDIUM | seleniumbase/plugins/sb_manager.py | 371 | # As a shortcut, you can use "--edge" instead of "--browser=edge", etc, | COMMENT |
| MEDIUM | seleniumbase/plugins/pytest_plugin.py | 1498 | # As a shortcut, you can use "--edge" instead of "--browser=edge", etc, | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | seleniumbase/undetected/__init__.py | 169 | debug_port = selenium.webdriver.common.service.utils.free_port() | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | seleniumbase/undetected/reactor.py | 6 | logger = logging.getLogger(__name__) | CODE |
| LOW | seleniumbase/undetected/patcher.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | seleniumbase/undetected/cdp_driver/config.py | 19 | __all__ = [ | CODE |
| LOW | seleniumbase/undetected/cdp_driver/config.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | seleniumbase/undetected/cdp_driver/element.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | seleniumbase/undetected/cdp_driver/browser.py | 33 | logger = logging.getLogger(__name__) | CODE |
| LOW | seleniumbase/undetected/cdp_driver/cdp_util.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | seleniumbase/undetected/cdp_driver/tab.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | seleniumbase/undetected/cdp_driver/_contradict.py | 6 | __all__ = ["cdict", "ContraDict"] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | seleniumbase/utilities/selenium_ide/ReadMe.md | 11 | #### Step 1: Make a recording with the Katalon Recorder | COMMENT |
| LOW⚡ | seleniumbase/utilities/selenium_ide/ReadMe.md | 15 | #### Step 2: Export your recording as a Python 2 Webdriver script | COMMENT |
| LOW⚡ | seleniumbase/utilities/selenium_ide/ReadMe.md | 19 | #### Step 3: Run `seleniumbase convert` on your exported Python file | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | seleniumbase/core/browser_launcher.py | 3042 | CODE | |
| LOW | seleniumbase/plugins/driver_manager.py | 67 | CODE | |
| LOW | seleniumbase/plugins/sb_manager.py | 33 | CODE | |
| LOW | seleniumbase/undetected/__init__.py | 43 | CODE | |
| LOW | seleniumbase/undetected/cdp_driver/config.py | 43 | CODE | |
| LOW | seleniumbase/undetected/cdp_driver/browser.py | 110 | CODE | |
| LOW | seleniumbase/undetected/cdp_driver/cdp_util.py | 288 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | seleniumbase/common/decorators.py | 26 | def my_method(): | STRING |
| LOW | seleniumbase/common/decorators.py | 89 | def my_method(): | STRING |
| LOW | examples/performance_test.py | 15 | def my_method(): | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | seleniumbase/js_code/recorder_js.py | 165 | non_id_attributes.push('placeholder'); | CODE |
| LOW⚡ | seleniumbase/js_code/active_css_js.py | 165 | non_id_attributes.push('placeholder'); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | seleniumbase/undetected/cdp_driver/connection.py | 324 | # If the wait_for() fails or errors out, just pass. | COMMENT |