Repository Analysis

seleniumbase/SeleniumBase

📊 APIs for web automation, testing, and bypassing bot-detection.

21.1 Moderate AI signal View on GitHub

Analysis Overview

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).

21.1
Adjusted Score
21.1
Raw Score
100%
Time Factor
2026-07-13
Last Push
12.9K
Stars
Python
Language
98.1K
Lines of Code
709
Files
1.2K
Pattern Hits
2026-07-14
Scan Date
0.33
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

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.

Severity Breakdown

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.

CRITICAL 1HIGH 230MEDIUM 65LOW 899

Directory Score Breakdown

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.

Pattern Findings

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.

Cross-Language Confusion209 hits · 931 pts
SeverityFileLineSnippetContext
HIGHseleniumbase/core/tour_helper.py958 """script.onload = function() { null };"""STRING
HIGHseleniumbase/core/sb_cdp.py1502 self.page.evaluate("navigator.language || navigator.languages[0]")CODE
HIGHseleniumbase/console_scripts/run.py592 print(" seleniumbase encrypt || seleniumbase obfuscate")CODE
HIGHseleniumbase/console_scripts/run.py594 print(" sbase encrypt || sbase obfuscate")CODE
HIGHseleniumbase/console_scripts/run.py609 print(" seleniumbase decrypt || seleniumbase unobfuscate")CODE
HIGHseleniumbase/console_scripts/run.py611 print(" sbase decrypt || sbase unobfuscate")CODE
HIGHseleniumbase/js_code/recorder_js.py131 non_id_attributes.push('name');CODE
HIGHseleniumbase/js_code/recorder_js.py132 non_id_attributes.push('data-qa');CODE
HIGHseleniumbase/js_code/recorder_js.py133 non_id_attributes.push('data-tid');CODE
HIGHseleniumbase/js_code/recorder_js.py134 non_id_attributes.push('data-el');CODE
HIGHseleniumbase/js_code/recorder_js.py135 non_id_attributes.push('data-se');CODE
HIGHseleniumbase/js_code/recorder_js.py136 non_id_attributes.push('data-name');CODE
HIGHseleniumbase/js_code/recorder_js.py137 non_id_attributes.push('data-auto');CODE
HIGHseleniumbase/js_code/recorder_js.py138 non_id_attributes.push('data-text');CODE
HIGHseleniumbase/js_code/recorder_js.py139 non_id_attributes.push('data-test');CODE
HIGHseleniumbase/js_code/recorder_js.py140 non_id_attributes.push('data-testid');CODE
HIGHseleniumbase/js_code/recorder_js.py141 non_id_attributes.push('data-test-id');CODE
HIGHseleniumbase/js_code/recorder_js.py142 non_id_attributes.push('data-test-selector');CODE
HIGHseleniumbase/js_code/recorder_js.py143 non_id_attributes.push('data-nav');CODE
HIGHseleniumbase/js_code/recorder_js.py144 non_id_attributes.push('data-sb');CODE
HIGHseleniumbase/js_code/recorder_js.py145 non_id_attributes.push('data-cy');CODE
HIGHseleniumbase/js_code/recorder_js.py146 non_id_attributes.push('data-action');CODE
HIGHseleniumbase/js_code/recorder_js.py147 non_id_attributes.push('data-target');CODE
HIGHseleniumbase/js_code/recorder_js.py148 non_id_attributes.push('data-tooltip');CODE
HIGHseleniumbase/js_code/recorder_js.py149 non_id_attributes.push('alt');CODE
HIGHseleniumbase/js_code/recorder_js.py150 non_id_attributes.push('title');CODE
HIGHseleniumbase/js_code/recorder_js.py151 non_id_attributes.push('heading');CODE
HIGHseleniumbase/js_code/recorder_js.py152 non_id_attributes.push('translate');CODE
HIGHseleniumbase/js_code/recorder_js.py153 non_id_attributes.push('aria-label');CODE
HIGHseleniumbase/js_code/recorder_js.py154 non_id_attributes.push('aria-describedby');CODE
HIGHseleniumbase/js_code/recorder_js.py155 non_id_attributes.push('rel');CODE
HIGHseleniumbase/js_code/recorder_js.py156 non_id_attributes.push('ng-model');CODE
HIGHseleniumbase/js_code/recorder_js.py157 non_id_attributes.push('ng-href');CODE
HIGHseleniumbase/js_code/recorder_js.py158 non_id_attributes.push('href');CODE
HIGHseleniumbase/js_code/recorder_js.py159 non_id_attributes.push('label');CODE
HIGHseleniumbase/js_code/recorder_js.py160 non_id_attributes.push('data-content');CODE
HIGHseleniumbase/js_code/recorder_js.py161 non_id_attributes.push('data-tip');CODE
HIGHseleniumbase/js_code/recorder_js.py162 non_id_attributes.push('data-for');CODE
HIGHseleniumbase/js_code/recorder_js.py163 non_id_attributes.push('class');CODE
HIGHseleniumbase/js_code/recorder_js.py164 non_id_attributes.push('for');CODE
HIGHseleniumbase/js_code/recorder_js.py165 non_id_attributes.push('placeholder');CODE
HIGHseleniumbase/js_code/recorder_js.py166 non_id_attributes.push('value');CODE
HIGHseleniumbase/js_code/recorder_js.py167 non_id_attributes.push('ng-click');CODE
HIGHseleniumbase/js_code/recorder_js.py168 non_id_attributes.push('ng-if');CODE
HIGHseleniumbase/js_code/recorder_js.py169 non_id_attributes.push('src');CODE
HIGHseleniumbase/js_code/recorder_js.py176 selector_by_attr[i] = null;CODE
HIGHseleniumbase/js_code/recorder_js.py191 basic_tags.push('h1');CODE
HIGHseleniumbase/js_code/recorder_js.py192 basic_tags.push('h2');CODE
HIGHseleniumbase/js_code/recorder_js.py193 basic_tags.push('h3');CODE
HIGHseleniumbase/js_code/recorder_js.py194 basic_tags.push('canvas');CODE
HIGHseleniumbase/js_code/recorder_js.py195 basic_tags.push('center');CODE
HIGHseleniumbase/js_code/recorder_js.py196 basic_tags.push('input');CODE
HIGHseleniumbase/js_code/recorder_js.py197 basic_tags.push('textarea');CODE
HIGHseleniumbase/js_code/recorder_js.py200 if (tag_name == basic_tags[i] && d_qsa.length == 1 && el == d_qsa[0])CODE
HIGHseleniumbase/js_code/recorder_js.py204 contains_tags.push('a');CODE
HIGHseleniumbase/js_code/recorder_js.py205 contains_tags.push('b');CODE
HIGHseleniumbase/js_code/recorder_js.py206 contains_tags.push('h1');CODE
HIGHseleniumbase/js_code/recorder_js.py207 contains_tags.push('h2');CODE
HIGHseleniumbase/js_code/recorder_js.py208 contains_tags.push('h3');CODE
HIGHseleniumbase/js_code/recorder_js.py209 contains_tags.push('h4');CODE
149 more matches not shown…
Hyper-Verbose Identifiers337 hits · 354 pts
SeverityFileLineSnippetContext
LOWREADME.md965 def test_find_army_of_robots_on_xkcd_desert_island(self):CODE
LOWREADME.md1297def is_there_a_cloaked_klingon_ship_on_this_page():CODE
LOWREADME.md1315def get_mirror_universe_captain_picard_superbowl_ad(superbowl_year):CODE
LOWseleniumbase/core/jqc_helper.py17def jquery_confirm_button_dialog(driver, message, buttons, options=None):CODE
LOWseleniumbase/core/jqc_helper.py111def jquery_confirm_text_dialog(driver, message, button=None, options=None):CODE
LOWseleniumbase/core/jqc_helper.py200def jquery_confirm_full_dialog(driver, message, buttons, options=None):CODE
LOWseleniumbase/core/application_manager.py8 def generate_application_string(cls, test):CODE
LOWseleniumbase/core/session_helper.py4def end_reused_class_session_as_needed():CODE
LOWseleniumbase/core/download_helper.py55def reset_downloads_folder_assistant(archived_downloads_folder):CODE
LOWseleniumbase/core/sb_cdp.py1927 def __make_sure_pyautogui_lock_is_writable(self):CODE
LOWseleniumbase/core/sb_cdp.py1931 def __verify_pyautogui_has_a_headed_browser(self):CODE
LOWseleniumbase/core/sb_cdp.py2209 def _on_an_incapsula_hcaptcha_page(self, *args, **kwargs):CODE
LOWseleniumbase/core/sb_cdp.py2218 def _on_a_datadome_slider_page(self, *args, **kwargs):CODE
LOWseleniumbase/core/sb_cdp.py2228 def _on_a_friendly_captcha_page(self, *args, **kwargs):CODE
LOWseleniumbase/core/sb_cdp.py62 def __convert_to_css_if_xpath(self, selector):CODE
LOWseleniumbase/core/sb_cdp.py505 def click_nth_visible_element(self, selector, number, scroll=True):CODE
LOWseleniumbase/core/sb_cdp.py616 def __mouse_click_with_offset_async(self, element, *args, **kwargs):CODE
LOWseleniumbase/core/sb_cdp.py857 def bring_active_window_to_front(self):CODE
LOWseleniumbase/core/sb_cdp.py1852 def get_path_of_downloaded_file(self, file):CODE
LOWseleniumbase/core/sb_cdp.py1942 def __install_pyautogui_if_missing(self):CODE
LOWseleniumbase/core/sb_cdp.py2014 def __get_configured_pyautogui(self, pyautogui_copy):CODE
LOWseleniumbase/core/sb_cdp.py2307 def __gui_slide_datadome_captcha(self):CODE
LOWseleniumbase/core/sb_cdp.py2333 def __cdp_click_incapsula_hcaptcha(self, use_cdp=True):CODE
LOWseleniumbase/core/sb_cdp.py2382 def __gui_click_friendly_captcha(self, use_cdp=False):CODE
LOWseleniumbase/core/sb_cdp.py2986 def wait_for_text_not_visible(self, text, selector="body", timeout=None):CODE
LOWseleniumbase/core/sb_cdp.py3033 def wait_for_element_not_visible(self, selector, timeout=None):CODE
LOWseleniumbase/core/sb_cdp.py3077 def wait_for_any_of_elements_visible(self, *args, **kwargs):CODE
LOWseleniumbase/core/sb_cdp.py3149 def wait_for_any_of_elements_present(self, *args, **kwargs):CODE
LOWseleniumbase/core/sb_cdp.py3211 def assert_any_of_elements_visible(self, *args, **kwargs):CODE
LOWseleniumbase/core/sb_cdp.py3216 def assert_any_of_elements_present(self, *args, **kwargs):CODE
LOWseleniumbase/core/sb_cdp.py3273 def assert_element_not_visible(self, selector, timeout=None):CODE
LOWseleniumbase/core/sb_cdp.py3692 def __create_log_path_as_needed(self, script_logpath):CODE
LOWseleniumbase/core/browser_launcher.py2276def _add_chrome_disable_csp_extension(chrome_options):CODE
LOWseleniumbase/core/browser_launcher.py2283def _add_chrome_ad_block_extension(chrome_options):CODE
LOWseleniumbase/core/browser_launcher.py2290def _add_chrome_recorder_extension(chrome_options):CODE
LOWseleniumbase/core/browser_launcher.py145def make_driver_executable_if_not(driver_path):CODE
LOWseleniumbase/core/browser_launcher.py359def get_latest_chromedriver_version():CODE
LOWseleniumbase/core/browser_launcher.py403def find_chromedriver_version_to_use(use_version, driver_version):CODE
LOWseleniumbase/core/browser_launcher.py436def find_edgedriver_version_to_use(use_version, driver_version):CODE
LOWseleniumbase/core/browser_launcher.py1071def verify_pyautogui_has_a_headed_browser(driver):CODE
LOWseleniumbase/core/browser_launcher.py1080def __install_pyautogui_if_missing():CODE
LOWseleniumbase/core/browser_launcher.py1146def install_pyautogui_if_missing(driver):CODE
LOWseleniumbase/core/browser_launcher.py2028def headless_iedriver_on_path():CODE
LOWseleniumbase/core/browser_launcher.py2032def get_valid_binary_names_for_browser(browser):CODE
LOWseleniumbase/core/browser_launcher.py2152def _add_chrome_proxy_extension(CODE
LOWseleniumbase/core/report_helper.py134def clear_out_old_report_logs(archive_past_runs=True, get_log_folder=False):CODE
LOWseleniumbase/core/detect_b_ver.py94def linux_browser_apps_to_cmd(*apps):CODE
LOWseleniumbase/core/detect_b_ver.py414def windows_browser_apps_to_cmd(*apps):CODE
LOWseleniumbase/core/detect_b_ver.py473def get_browser_version_from_binary(binary_location):CODE
LOWseleniumbase/core/detect_b_ver.py501def get_browser_version_from_os(browser_type):CODE
LOWseleniumbase/core/visual_helper.py10def get_visual_baseline_folder():CODE
LOWseleniumbase/core/visual_helper.py14def visual_baseline_folder_setup():CODE
LOWseleniumbase/core/sb_driver.py158 def assert_element_not_visible(self, *args, **kwargs):CODE
LOWseleniumbase/core/sb_driver.py191 def wait_for_element_not_visible(self, *args, **kwargs):CODE
LOWseleniumbase/core/sb_driver.py210 def wait_for_text_not_visible(self, *args, **kwargs):CODE
LOWseleniumbase/core/sb_driver.py215 def wait_for_and_accept_alert(self, *args, **kwargs):CODE
LOWseleniumbase/core/sb_driver.py220 def wait_for_and_dismiss_alert(self, *args, **kwargs):CODE
LOWseleniumbase/core/sb_driver.py240 def is_non_empty_text_visible(self, *args, **kwargs):CODE
LOWseleniumbase/core/proxy_helper.py157def remove_proxy_zip_if_present():CODE
LOWseleniumbase/core/log_helper.py105def get_driver_name_and_version(driver, browser):CODE
277 more matches not shown…
Excessive Try-Catch Wrapping338 hits · 346 pts
SeverityFileLineSnippetContext
LOWseleniumbase/core/recorder_helper.py13 except Exception:CODE
LOWseleniumbase/core/recorder_helper.py29 except Exception:CODE
LOWseleniumbase/core/recorder_helper.py430 except Exception:CODE
LOWseleniumbase/core/session_helper.py15 except Exception:CODE
LOWseleniumbase/core/download_helper.py59 except Exception:CODE
LOWseleniumbase/core/download_helper.py70 except Exception:CODE
LOWseleniumbase/core/tour_helper.py43 except Exception:CODE
LOWseleniumbase/core/tour_helper.py55 except Exception:CODE
LOWseleniumbase/core/tour_helper.py297 except Exception:CODE
LOWseleniumbase/core/tour_helper.py311 except Exception:CODE
LOWseleniumbase/core/tour_helper.py315 except Exception:CODE
LOWseleniumbase/core/tour_helper.py329 except Exception:CODE
LOWseleniumbase/core/tour_helper.py344 except Exception:CODE
LOWseleniumbase/core/tour_helper.py368 except Exception:CODE
LOWseleniumbase/core/tour_helper.py382 except Exception:CODE
LOWseleniumbase/core/tour_helper.py398 except Exception:CODE
LOWseleniumbase/core/tour_helper.py444 except Exception:CODE
LOWseleniumbase/core/tour_helper.py459 except Exception:CODE
LOWseleniumbase/core/tour_helper.py463 except Exception:CODE
LOWseleniumbase/core/tour_helper.py475 except Exception:CODE
LOWseleniumbase/core/tour_helper.py496 except Exception:CODE
LOWseleniumbase/core/tour_helper.py545 except Exception:CODE
LOWseleniumbase/core/tour_helper.py577 except Exception:CODE
LOWseleniumbase/core/tour_helper.py590 except Exception:CODE
LOWseleniumbase/core/tour_helper.py606 except Exception:CODE
LOWseleniumbase/core/tour_helper.py629 except Exception:CODE
LOWseleniumbase/core/tour_helper.py680 except Exception:CODE
LOWseleniumbase/core/tour_helper.py695 except Exception:CODE
LOWseleniumbase/core/tour_helper.py699 except Exception:CODE
LOWseleniumbase/core/tour_helper.py719 except Exception:CODE
LOWseleniumbase/core/tour_helper.py729 except Exception:CODE
LOWseleniumbase/core/tour_helper.py745 except Exception:CODE
LOWseleniumbase/core/tour_helper.py766 except Exception:CODE
LOWseleniumbase/core/tour_helper.py828 except Exception:CODE
LOWseleniumbase/core/tour_helper.py853 except Exception:CODE
LOWseleniumbase/core/tour_helper.py863 except Exception:CODE
LOWseleniumbase/core/tour_helper.py874 except Exception:CODE
LOWseleniumbase/core/tour_helper.py882 except Exception:CODE
LOWseleniumbase/core/tour_helper.py903 except Exception:CODE
LOWseleniumbase/core/tour_helper.py1135 except Exception:CODE
LOWseleniumbase/core/tour_helper.py87 except Exception:STRING
LOWseleniumbase/core/tour_helper.py99 except Exception:STRING
LOWseleniumbase/core/tour_helper.py131 except Exception:STRING
LOWseleniumbase/core/tour_helper.py143 except Exception:STRING
LOWseleniumbase/core/tour_helper.py184 except Exception:STRING
LOWseleniumbase/core/tour_helper.py196 except Exception:STRING
LOWseleniumbase/core/tour_helper.py243 except Exception:STRING
LOWseleniumbase/core/tour_helper.py253 except Exception:STRING
MEDIUMseleniumbase/core/sb_cdp.py737def __get_attribute(self, element, attribute):CODE
MEDIUMseleniumbase/core/sb_cdp.py1251def maximize(self):CODE
MEDIUMseleniumbase/core/sb_cdp.py1907def is_attribute_present(self, selector, attribute, value=None):CODE
MEDIUMseleniumbase/core/sb_cdp.py2803def gui_hover_element(self, selector, timeframe=0.27):CODE
MEDIUMseleniumbase/core/sb_cdp.py2891def is_element_present(self, selector):CODE
LOWseleniumbase/core/sb_cdp.py1920 except Exception:CODE
LOWseleniumbase/core/sb_cdp.py2895 except Exception:CODE
LOWseleniumbase/core/sb_cdp.py2904 except Exception:CODE
LOWseleniumbase/core/sb_cdp.py2911 except Exception:CODE
LOWseleniumbase/core/sb_cdp.py166 except Exception:CODE
LOWseleniumbase/core/sb_cdp.py317 except Exception:CODE
LOWseleniumbase/core/sb_cdp.py344 except Exception:CODE
278 more matches not shown…
Deep Nesting134 hits · 112 pts
SeverityFileLineSnippetContext
LOWseleniumbase/core/jqc_helper.py17CODE
LOWseleniumbase/core/jqc_helper.py111CODE
LOWseleniumbase/core/jqc_helper.py200CODE
LOWseleniumbase/core/recorder_helper.py4CODE
LOWseleniumbase/core/settings_parser.py5CODE
LOWseleniumbase/core/tour_helper.py257CODE
LOWseleniumbase/core/tour_helper.py403CODE
LOWseleniumbase/core/tour_helper.py501CODE
LOWseleniumbase/core/tour_helper.py634CODE
LOWseleniumbase/core/tour_helper.py771CODE
LOWseleniumbase/core/tour_helper.py908CODE
LOWseleniumbase/core/sb_cdp.py378CODE
LOWseleniumbase/core/sb_cdp.py873CODE
LOWseleniumbase/core/sb_cdp.py917CODE
LOWseleniumbase/core/sb_cdp.py929CODE
LOWseleniumbase/core/sb_cdp.py1323CODE
LOWseleniumbase/core/sb_cdp.py1942CODE
LOWseleniumbase/core/sb_cdp.py2333CODE
LOWseleniumbase/core/sb_cdp.py2443CODE
LOWseleniumbase/core/sb_cdp.py2752CODE
LOWseleniumbase/core/sb_cdp.py3077CODE
LOWseleniumbase/core/sb_cdp.py3149CODE
LOWseleniumbase/core/browser_launcher.py153CODE
LOWseleniumbase/core/browser_launcher.py333CODE
LOWseleniumbase/core/browser_launcher.py380CODE
LOWseleniumbase/core/browser_launcher.py403CODE
LOWseleniumbase/core/browser_launcher.py484CODE
LOWseleniumbase/core/browser_launcher.py639CODE
LOWseleniumbase/core/browser_launcher.py1080CODE
LOWseleniumbase/core/browser_launcher.py1264CODE
LOWseleniumbase/core/browser_launcher.py1349CODE
LOWseleniumbase/core/browser_launcher.py1769CODE
LOWseleniumbase/core/browser_launcher.py2032CODE
LOWseleniumbase/core/browser_launcher.py2152CODE
LOWseleniumbase/core/browser_launcher.py2297CODE
LOWseleniumbase/core/browser_launcher.py2870CODE
LOWseleniumbase/core/browser_launcher.py3042CODE
LOWseleniumbase/core/browser_launcher.py3644CODE
LOWseleniumbase/core/browser_launcher.py4055CODE
LOWseleniumbase/core/detect_b_ver.py103CODE
LOWseleniumbase/core/proxy_helper.py170CODE
LOWseleniumbase/core/log_helper.py105CODE
LOWseleniumbase/core/log_helper.py124CODE
LOWseleniumbase/core/log_helper.py391CODE
LOWseleniumbase/core/log_helper.py515CODE
LOWseleniumbase/core/log_helper.py543CODE
LOWseleniumbase/core/nest_asyncio.py91CODE
LOWseleniumbase/core/nest_asyncio.py142CODE
LOWseleniumbase/core/nest_asyncio.py52CODE
LOWseleniumbase/core/nest_asyncio.py166CODE
LOWseleniumbase/core/nest_asyncio.py210CODE
LOWseleniumbase/translate/translator.py103CODE
LOWseleniumbase/translate/translator.py268CODE
LOWseleniumbase/plugins/driver_manager.py67CODE
LOWseleniumbase/plugins/sb_manager.py33CODE
LOWseleniumbase/plugins/base_plugin.py219CODE
LOWseleniumbase/plugins/base_plugin.py364CODE
LOWseleniumbase/plugins/pytest_plugin.py1683CODE
LOWseleniumbase/plugins/pytest_plugin.py2148CODE
LOWseleniumbase/plugins/pytest_plugin.py2215CODE
74 more matches not shown…
Cross-File Repetition21 hits · 105 pts
SeverityFileLineSnippetContext
HIGHseleniumbase/core/sb_cdp.py0var $elements = document.queryselectorall( 'form[class], form div[class]'); var index = 0, length = $elements.length; foSTRING
HIGHseleniumbase/core/browser_launcher.py0var $elements = document.queryselectorall( 'form[class], form div[class]'); var index = 0, length = $elements.length; foSTRING
HIGHseleniumbase/undetected/cdp_driver/tab.py0var $elements = document.queryselectorall( 'form[class], form div[class]'); var index = 0, length = $elements.length; foSTRING
HIGHseleniumbase/core/sb_cdp.py0var $elements = document.queryselectorall( 'form[style], form div[style]'); var index = 0, length = $elements.length; foSTRING
HIGHseleniumbase/core/browser_launcher.py0var $elements = document.queryselectorall( 'form[style], form div[style]'); var index = 0, length = $elements.length; foSTRING
HIGHseleniumbase/undetected/cdp_driver/tab.py0var $elements = document.queryselectorall( 'form[style], form div[style]'); var index = 0, length = $elements.length; foSTRING
HIGHseleniumbase/core/sb_cdp.py0var $elements = document.queryselectorall( 'form [id*="turnstile"]'); var index = 0, length = $elements.length; for(; inSTRING
HIGHseleniumbase/core/browser_launcher.py0var $elements = document.queryselectorall( 'form [id*="turnstile"]'); var index = 0, length = $elements.length; for(; inSTRING
HIGHseleniumbase/undetected/cdp_driver/tab.py0var $elements = document.queryselectorall( 'form [id*="turnstile"]'); var index = 0, length = $elements.length; for(; inSTRING
HIGHseleniumbase/core/sb_cdp.py0var $elements = document.queryselectorall( '[style*="text-align: center;"]'); var index = 0, length = $elements.length; STRING
HIGHseleniumbase/core/browser_launcher.py0var $elements = document.queryselectorall( '[style*="text-align: center;"]'); var index = 0, length = $elements.length; STRING
HIGHseleniumbase/undetected/cdp_driver/tab.py0var $elements = document.queryselectorall( '[style*="text-align: center;"]'); var index = 0, length = $elements.length; STRING
HIGHseleniumbase/core/browser_launcher.py0if the driver is disconnected, use a cdp method when available.STRING
HIGHseleniumbase/core/sb_driver.py0if the driver is disconnected, use a cdp method when available.STRING
HIGHseleniumbase/core/log_helper.py0if the driver is disconnected, use a cdp method when available.STRING
HIGHhelp_docs/syntax_formats.md0this method overrides get_new_driver() from basecase.STRING
HIGHexamples/test_override_sb_fixture.py0this method overrides get_new_driver() from basecase.STRING
HIGHexamples/test_override_driver.py0this method overrides get_new_driver() from basecase.STRING
HIGHexamples/raw_uc_events.py0note: this uses plain uc mode, which was replaced by uc + cdp mode. pyautogui is installed automatically for uc_gui methSTRING
HIGHexamples/uc_cdp_events.py0note: this uses plain uc mode, which was replaced by uc + cdp mode. pyautogui is installed automatically for uc_gui methSTRING
HIGHexamples/raw_cdp_logging.py0note: this uses plain uc mode, which was replaced by uc + cdp mode. pyautogui is installed automatically for uc_gui methSTRING
Unused Imports78 hits · 78 pts
SeverityFileLineSnippetContext
LOWsetup.py3CODE
LOWseleniumbase/__init__.py7CODE
LOWseleniumbase/__init__.py8CODE
LOWseleniumbase/__init__.py10CODE
LOWseleniumbase/__init__.py11CODE
LOWseleniumbase/__init__.py12CODE
LOWseleniumbase/__init__.py13CODE
LOWseleniumbase/__init__.py14CODE
LOWseleniumbase/__init__.py16CODE
LOWseleniumbase/__init__.py17CODE
LOWseleniumbase/__init__.py18CODE
LOWseleniumbase/__init__.py19CODE
LOWseleniumbase/__init__.py20CODE
LOWseleniumbase/__init__.py21CODE
LOWseleniumbase/__init__.py22CODE
LOWseleniumbase/core/mysql.py22CODE
LOWseleniumbase/translate/__init__.py1CODE
LOWseleniumbase/translate/__init__.py2CODE
LOWseleniumbase/translate/__init__.py3CODE
LOWseleniumbase/translate/__init__.py4CODE
LOWseleniumbase/translate/__init__.py5CODE
LOWseleniumbase/translate/__init__.py6CODE
LOWseleniumbase/translate/__init__.py7CODE
LOWseleniumbase/translate/__init__.py8CODE
LOWseleniumbase/translate/__init__.py9CODE
LOWseleniumbase/console_scripts/run.py1217CODE
LOWseleniumbase/behave/steps.py1CODE
LOWseleniumbase/undetected/cdp_driver/__init__.py1CODE
LOWseleniumbase/undetected/cdp_driver/__init__.py2CODE
LOWseleniumbase/undetected/cdp_driver/__init__.py3CODE
LOWseleniumbase/undetected/cdp_driver/element.py1CODE
LOWseleniumbase/undetected/cdp_driver/element.py12CODE
LOWseleniumbase/undetected/cdp_driver/element.py13CODE
LOWseleniumbase/undetected/cdp_driver/element.py14CODE
LOWseleniumbase/undetected/cdp_driver/element.py15CODE
LOWseleniumbase/undetected/cdp_driver/element.py16CODE
LOWseleniumbase/undetected/cdp_driver/browser.py2CODE
LOWseleniumbase/undetected/cdp_driver/browser.py6CODE
LOWseleniumbase/undetected/cdp_driver/connection.py1CODE
LOWseleniumbase/undetected/cdp_driver/connection.py26CODE
LOWseleniumbase/undetected/cdp_driver/connection.py27CODE
LOWseleniumbase/undetected/cdp_driver/connection.py28CODE
LOWseleniumbase/undetected/cdp_driver/connection.py29CODE
LOWseleniumbase/undetected/cdp_driver/connection.py30CODE
LOWseleniumbase/undetected/cdp_driver/connection.py31CODE
LOWseleniumbase/undetected/cdp_driver/cdp_util.py2CODE
LOWseleniumbase/undetected/cdp_driver/tab.py1CODE
LOWsbase/__init__.py1CODE
LOWsbase/__init__.py2CODE
LOWsbase/__init__.py3CODE
LOWsbase/__init__.py4CODE
LOWsbase/__init__.py5CODE
LOWsbase/__init__.py6CODE
LOWsbase/__init__.py7CODE
LOWsbase/__init__.py8CODE
LOWsbase/__init__.py9CODE
LOWsbase/__init__.py10CODE
LOWsbase/__init__.py11CODE
LOWsbase/__init__.py12CODE
LOWsbase/__init__.py13CODE
18 more matches not shown…
Self-Referential Comments16 hits · 46 pts
SeverityFileLineSnippetContext
MEDIUMseleniumbase/undetected/__init__.py211 # Create a temporary folder for the user-data profile.COMMENT
MEDIUMexamples/tour_examples/driverjs_maps_tour.py15 # Create a website tour using the DriverJS libraryCOMMENT
MEDIUMexamples/tour_examples/google_tour.py14 # Create a website tour using the ShepherdJS library with "dark" themeCOMMENT
MEDIUMexamples/tour_examples/google_tour.py24 # Create a website tour using the ShepherdJS library with "light" themeCOMMENT
MEDIUMexamples/tour_examples/google_tour.py35 # Create a website tour using the Bootstrap Tour JS libraryCOMMENT
MEDIUMexamples/tour_examples/google_tour.py50 # Create a website tour using the IntroJS libraryCOMMENT
MEDIUMexamples/presenter/fundamentals.py393 "sbase mkdir [DIRECTORY] # Create a test directory\n"CODE
MEDIUMexamples/presenter/fundamentals.py394 "sbase mkfile [FILE.py] # Create a test file\n"CODE
MEDIUMexamples/presenter/fundamentals.py397 "sbase mkpres # Create a Presentation boilerplate\n"CODE
MEDIUMexamples/presenter/fundamentals.py398 "sbase mkchart # Create a Chart boilerplate\n"CODE
MEDIUMexamples/presenter/py_virtual_envs.py126 "# Create a virtual environment:\n"CODE
MEDIUMexamples/presenter/py_virtual_envs.py172 "# Create a requirements file from installed packages:\n"CODE
MEDIUMexamples/presenter/edge_presentation.py648 "sbase mkdir [DIRECTORY] # Create a test directory\n"CODE
MEDIUMexamples/presenter/edge_presentation.py649 "sbase mkfile [FILE.py] # Create a test file\n"CODE
MEDIUMexamples/presenter/edge_presentation.py652 "sbase mkpres # Create a Presentation boilerplate\n"CODE
MEDIUMexamples/presenter/edge_presentation.py653 "sbase mkchart # Create a Chart boilerplate\n"CODE
Decorative Section Separators6 hits · 18 pts
SeverityFileLineSnippetContext
MEDIUMseleniumbase/core/create_db_tables.sql4# -----------------------------------COMMENT
MEDIUMseleniumbase/core/create_db_tables.sql23# -----------------------------------COMMENT
MEDIUMseleniumbase/translate/translator.py1001 # ----------------------------------------COMMENT
MEDIUMseleniumbase/translate/translator.py1020 # ----------------------------------------COMMENT
MEDIUMseleniumbase/console_scripts/sb_print.py588 # ----------------------------------------COMMENT
MEDIUMseleniumbase/console_scripts/sb_print.py632 # ----------------------------------------COMMENT
Over-Commented Block18 hits · 18 pts
SeverityFileLineSnippetContext
LOWazure-pipelines.yml81 #- script: python -m pytest examples/test_inspect_html.py --browser=chrome --headless -v -s --junit-xml=junit/test-resCOMMENT
LOWazure-pipelines.yml101# - script: python setup.py sdistCOMMENT
LOWseleniumbase/core/browser_launcher.py3501 # required when using a proxy server that has authentication,COMMENT
LOWseleniumbase/config/settings.py21# selenium.common.exceptions.TimeoutException:COMMENT
LOWseleniumbase/config/settings.py81COMMENT
LOWseleniumbase/config/settings.py101COMMENT
LOWseleniumbase/config/settings.py141# If True, the automation will start in full-screen modeCOMMENT
LOWhelp_docs/method_summary.md561# self.wait_for_exact_text(text, selector="html", by="css selector", timeout=None)COMMENT
LOWhelp_docs/method_summary.md641COMMENT
LOWexamples/custom_settings.py21COMMENT
LOWexamples/custom_settings.py81# (This only affects driver downloads coming from tests.)COMMENT
LOWexamples/my_first_test.py41# Here's an example of changing the "by":COMMENT
LOWexamples/my_first_test.py61# useful if a web page needs additional time to load an element.COMMENT
LOWexamples/my_first_test.py81# = self.wait_for_element()COMMENT
LOWexamples/my_first_test.py101# self.assert_true("xkcd: volume 0" in text)COMMENT
LOWexamples/my_first_test.py121# element = self.find_element("h2")COMMENT
LOWexamples/my_first_test.py141#COMMENT
LOWexamples/visual_testing/layout_test.py21 # Now that we know the Exception was raised as expected,COMMENT
Redundant / Tautological Comments8 hits · 12 pts
SeverityFileLineSnippetContext
LOWseleniumbase/plugins/driver_manager.py279 # Check if binary-location in optionsCOMMENT
LOWseleniumbase/plugins/selenium_plugin.py1115 # Check if binary-location in optionsCOMMENT
LOWseleniumbase/plugins/sb_manager.py347 # Check if binary-location in optionsCOMMENT
LOWseleniumbase/plugins/pytest_plugin.py1448 # Check if binary-location in optionsCOMMENT
LOWseleniumbase/undetected/cdp_driver/tab.py529 # Check if parent actually has a parentCOMMENT
LOWseleniumbase/undetected/cdp_driver/tab.py612 # Check if parent has a parent, and update it to be sure.COMMENT
LOWexamples/migration/protractor/mat_paginator_test.py10 # Set pagination to 5 items per pageCOMMENT
LOWexamples/migration/protractor/mat_paginator_test.py23 # Set pagination to 10 items per pageCOMMENT
Slop Phrases4 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMseleniumbase/plugins/driver_manager.py303 # As a shortcut, you can use "--edge" instead of "--browser=edge", etc,COMMENT
MEDIUMseleniumbase/plugins/selenium_plugin.py1107 # As a shortcut, you can use "--edge" instead of "--browser=edge", etc,COMMENT
MEDIUMseleniumbase/plugins/sb_manager.py371 # As a shortcut, you can use "--edge" instead of "--browser=edge", etc,COMMENT
MEDIUMseleniumbase/plugins/pytest_plugin.py1498 # As a shortcut, you can use "--edge" instead of "--browser=edge", etc,COMMENT
Hallucination Indicators1 hit · 10 pts
SeverityFileLineSnippetContext
CRITICALseleniumbase/undetected/__init__.py169 debug_port = selenium.webdriver.common.service.utils.free_port()CODE
Modern Structural Boilerplate9 hits · 9 pts
SeverityFileLineSnippetContext
LOWseleniumbase/undetected/reactor.py6logger = logging.getLogger(__name__)CODE
LOWseleniumbase/undetected/patcher.py13logger = logging.getLogger(__name__)CODE
LOWseleniumbase/undetected/cdp_driver/config.py19__all__ = [CODE
LOWseleniumbase/undetected/cdp_driver/config.py28logger = logging.getLogger(__name__)CODE
LOWseleniumbase/undetected/cdp_driver/element.py18logger = logging.getLogger(__name__)CODE
LOWseleniumbase/undetected/cdp_driver/browser.py33logger = logging.getLogger(__name__)CODE
LOWseleniumbase/undetected/cdp_driver/cdp_util.py28logger = logging.getLogger(__name__)CODE
LOWseleniumbase/undetected/cdp_driver/tab.py25logger = logging.getLogger(__name__)CODE
LOWseleniumbase/undetected/cdp_driver/_contradict.py6__all__ = ["cdict", "ContraDict"]CODE
Structural Annotation Overuse3 hits · 7 pts
SeverityFileLineSnippetContext
LOWseleniumbase/utilities/selenium_ide/ReadMe.md11#### Step 1: Make a recording with the Katalon RecorderCOMMENT
LOWseleniumbase/utilities/selenium_ide/ReadMe.md15#### Step 2: Export your recording as a Python 2 Webdriver scriptCOMMENT
LOWseleniumbase/utilities/selenium_ide/ReadMe.md19#### Step 3: Run `seleniumbase convert` on your exported Python fileCOMMENT
AI Structural Patterns7 hits · 6 pts
SeverityFileLineSnippetContext
LOWseleniumbase/core/browser_launcher.py3042CODE
LOWseleniumbase/plugins/driver_manager.py67CODE
LOWseleniumbase/plugins/sb_manager.py33CODE
LOWseleniumbase/undetected/__init__.py43CODE
LOWseleniumbase/undetected/cdp_driver/config.py43CODE
LOWseleniumbase/undetected/cdp_driver/browser.py110CODE
LOWseleniumbase/undetected/cdp_driver/cdp_util.py288CODE
Overly Generic Function Names3 hits · 2 pts
SeverityFileLineSnippetContext
LOWseleniumbase/common/decorators.py26 def my_method():STRING
LOWseleniumbase/common/decorators.py89 def my_method():STRING
LOWexamples/performance_test.py15 def my_method():STRING
Fake / Example Data2 hits · 2 pts
SeverityFileLineSnippetContext
LOWseleniumbase/js_code/recorder_js.py165 non_id_attributes.push('placeholder');CODE
LOWseleniumbase/js_code/active_css_js.py165 non_id_attributes.push('placeholder');CODE
AI Slop Vocabulary1 hit · 2 pts
SeverityFileLineSnippetContext
LOWseleniumbase/undetected/cdp_driver/connection.py324 # If the wait_for() fails or errors out, just pass.COMMENT