Python based web automation tool. Powerful and elegant.
This report presents the forensic synthetic code analysis of g1879/DrissionPage, a Python project with 12,407 GitHub stars. SynthScan v2.0 examined 29,011 lines of code across 126 source files, recording 411 pattern matches distributed across 10 syntactic categories. The overall adjusted score of 25.8 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 411 distinct pattern matches across 10 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 | DrissionPage/version.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/common.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/errors.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/items.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_functions/cookies.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_functions/web.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_functions/elements.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_functions/tools.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_functions/keys.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_functions/locator.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_functions/browser.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_functions/cli.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_functions/texts.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_functions/settings.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_functions/by.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_configs/chromium_options.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_configs/session_options.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_configs/options_manage.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_pages/chromium_base.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_pages/chromium_tab.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_pages/chromium_frame.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_pages/session_page.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_units/console.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_units/screencast.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_units/downloader.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_units/clicker.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_units/scroller.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_units/selector.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_units/actions.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_units/waiter.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_units/rect.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_units/cookies_setter.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_units/states.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_units/setter.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_units/listener.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_browsers/chromium.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_base/driver.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_base/base.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_elements/chromium_element.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_elements/none_element.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| HIGH | DrissionPage/_elements/session_element.py | 0 | @author : g1879 @contact : g1879@qq.com @website : https://drissionpage.cn @copyright: (c) 2020 by g1879, inc. all right | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/support.py | 287 | function note(x) {{ window.events.push(x); }} | CODE |
| HIGH | tests/feature_cases/test_unit_wrapper_contracts.py | 273 | default_perm.push() | CODE |
| HIGH | tests/feature_cases/test_small_unit_edge_contracts.py | 49 | setter.push(False) | CODE |
| HIGH | tests/feature_cases/test_small_unit_edge_contracts.py | 310 | 'return this.documentElement.scrollLeft.toString() + " " + this.documentElement.scrollTop.toString();': "11 | CODE |
| HIGH | tests/feature_cases/test_listener_upgrade.py | 94 | window.es.addEventListener('message', event => window.sseEvents.push(event.data)); | CODE |
| HIGH | tests/feature_cases/test_listener_upgrade.py | 95 | window.es.addEventListener('done', event => window.sseEvents.push(event.data)); | CODE |
| HIGH | DrissionPage/_functions/web.py | 116 | if (x< scrollLeft || y < scrollTop || x > vWidth + scrollLeft || y > vHeight + scrollTop){{return false;}} | CODE |
| HIGH | DrissionPage/_pages/chromium_base.py | 533 | ele = document.createElement(null); | CODE |
| HIGH | DrissionPage/_pages/chromium_base.py | 540 | ele = document.createElement(null); | CODE |
| HIGH | DrissionPage/_units/screencast.py | 66 | DrissionPage_Screencast_chunks.push(e.data); | CODE |
| HIGH | DrissionPage/_units/scroller.py | 118 | if (document.documentElement && document.documentElement.scrollTop) { | CODE |
| HIGH | DrissionPage/_units/rect.py | 95 | r = self._ele._run_js('return this.scrollLeft.toString() + " " + this.scrollTop.toString();') | CODE |
| HIGH | DrissionPage/_units/rect.py | 159 | r = self._owner._run_js('return window.innerWidth.toString() + " " + window.innerHeight.toString();') | CODE |
| HIGH | DrissionPage/_units/rect.py | 213 | r = self._frame.doc_ele._run_js('return this.documentElement.scrollLeft.toString() + " " ' | CODE |
| HIGH | DrissionPage/_units/rect.py | 214 | '+ this.documentElement.scrollTop.toString();') | CODE |
| HIGH | DrissionPage/_units/states.py | 180 | or self._frame.frame_ele._run_js('return this.offsetParent === null;') | CODE |
| HIGH⚡ | DrissionPage/_elements/chromium_element.py | 1175 | if(e.snapshotItem(i).constructor.name=="Text"){a.push(e.snapshotItem(i).data);} | CODE |
| HIGH⚡ | DrissionPage/_elements/chromium_element.py | 1176 | else if(e.snapshotItem(i).constructor.name=="Attr"){a.push(e.snapshotItem(i).nodeValue);} | CODE |
| HIGH⚡ | DrissionPage/_elements/chromium_element.py | 1177 | else if(e.snapshotItem(i).constructor.name=="Comment"){a.push(e.snapshotItem(i).nodeValue);} | CODE |
| HIGH⚡ | DrissionPage/_elements/chromium_element.py | 1178 | else{a.push(e.snapshotItem(i));}}""" | CODE |
| HIGH | DrissionPage/_elements/chromium_element.py | 433 | js = ('return this.complete && typeof this.naturalWidth != "undefined" ' | CODE |
| HIGH | DrissionPage/_elements/chromium_element.py | 434 | '&& this.naturalWidth > 0 && typeof this.naturalHeight != "undefined" ' | CODE |
| HIGH | DrissionPage/_elements/chromium_element.py | 510 | js = ('return this.complete && typeof this.naturalWidth != "undefined" && this.naturalWidth > 0 ' | CODE |
| HIGH | DrissionPage/_elements/chromium_element.py | 1164 | if(e.singleNodeValue==null){return null;} | CODE |
| HIGH | DrissionPage/_elements/chromium_element.py | 1189 | js = f'function(){{let e=document.evaluate(\'{xpath}\',{node_txt},null,{type_txt},null);\n{for_txt}\n{return_txt}}}' | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/runner.py | 204 | def _case_from_feature_module(module_name: str): | CODE |
| LOW⚡ | tests/check_runner_quality.py | 34 | def test_failed_cases_do_not_count_as_coverage() -> None: | CODE |
| LOW⚡ | tests/check_runner_quality.py | 44 | def test_passed_cases_count_as_coverage() -> None: | CODE |
| LOW⚡ | tests/check_runner_quality.py | 50 | def test_sensitive_values_are_redacted() -> None: | CODE |
| LOW | tests/check_runner_quality.py | 64 | def test_case_selection_and_suite_classification() -> None: | CODE |
| LOW | tests/feature_cases/test_unit_wrapper_contracts.py | 194 | def _check_scroller_contracts(): | CODE |
| LOW | tests/feature_cases/test_unit_wrapper_contracts.py | 260 | def _check_permission_and_cookie_payloads(): | CODE |
| LOW | …ts/feature_cases/test_chromium_base_extra_contracts.py | 103 | def test_base_protocol_and_lazy_accessors(): | CODE |
| LOW | …ts/feature_cases/test_chromium_base_extra_contracts.py | 209 | def test_base_storage_cache_alert_and_download_contracts(): | CODE |
| LOW | …ts/feature_cases/test_chromium_base_extra_contracts.py | 313 | def test_base_lookup_and_element_helpers(): | CODE |
| LOW | …ts/feature_cases/test_chromium_base_extra_contracts.py | 337 | def test_tab_cookie_conversion_mode_and_cleanup(): | CODE |
| LOW | …ts/feature_cases/test_chromium_base_extra_contracts.py | 409 | def test_frame_accessors_and_detach_bookkeeping(): | CODE |
| LOW | tests/feature_cases/test_base_page_contracts.py | 59 | def _check_base_parser_and_element_contracts(): | CODE |
| LOW | tests/feature_cases/test_base_page_contracts.py | 157 | def _check_base_page_contracts(): | CODE |
| LOW | tests/feature_cases/test_base_page_contracts.py | 213 | def _check_messenger_contracts(): | CODE |
| LOW | tests/feature_cases/test_base_page_contracts.py | 271 | def _check_session_page_properties_and_elements(): | CODE |
| LOW | tests/feature_cases/test_base_page_contracts.py | 334 | def _check_session_page_connections(): | CODE |
| LOW | tests/feature_cases/test_base_page_contracts.py | 479 | def _check_chromium_tab_delegation(): | CODE |
| LOW | tests/feature_cases/test_base_page_contracts.py | 643 | def _check_chromium_frame_delegation(): | CODE |
| LOW | tests/feature_cases/test_runtime_unit_contracts.py | 63 | def test_screencast_contracts(): | CODE |
| LOW | …eature_cases/test_browser_lifecycle_extra_contracts.py | 115 | def test_browser_helper_edge_contracts(): | CODE |
| LOW | …eature_cases/test_browser_lifecycle_extra_contracts.py | 220 | def test_browser_path_and_profile_fallback_contracts(): | CODE |
| LOW | …eature_cases/test_browser_lifecycle_extra_contracts.py | 330 | def test_connection_response_and_browser_discovery_contracts(): | CODE |
| LOW | …eature_cases/test_browser_lifecycle_extra_contracts.py | 535 | def test_browser_lazy_units_and_delegation_contracts(): | CODE |
| LOW | …eature_cases/test_browser_lifecycle_extra_contracts.py | 693 | def test_browser_lifecycle_bookkeeping_contracts(): | CODE |
| LOW | …eature_cases/test_browser_lifecycle_extra_contracts.py | 901 | def test_driver_send_and_event_contracts(): | CODE |
| LOW | …eature_cases/test_browser_lifecycle_extra_contracts.py | 1035 | def test_driver_start_stop_and_owner_contracts(): | CODE |
| LOW | tests/feature_cases/test_navigation_result.py | 23 | def test_session_navigation_objects(): | CODE |
| LOW | tests/feature_cases/test_navigation_result.py | 50 | def test_browser_navigation_matrix(executable): | CODE |
| LOW | tests/feature_cases/test_navigation_basics.py | 24 | def _check_session_local_file() -> None: | CODE |
| LOW | tests/feature_cases/test_navigation_basics.py | 35 | def _check_browser_navigation(ctx) -> None: | CODE |
| LOW | tests/feature_cases/test_chromium_browser_contracts.py | 66 | def test_browser_properties_context_cookies_and_latest_tab(): | CODE |
| LOW | tests/feature_cases/test_chromium_browser_contracts.py | 148 | def test_browser_tab_lookup_activation_and_close_normalization(): | CODE |
| LOW | tests/feature_cases/test_chromium_browser_contracts.py | 255 | def test_tabs_bookkeeping_contracts(): | CODE |
| LOW | tests/feature_cases/test_chromium_browser_contracts.py | 330 | def test_chromium_base_properties_widgets_cookies_and_storage(): | CODE |
| LOW | tests/feature_cases/test_chromium_browser_contracts.py | 468 | def test_chromium_tab_delegation_close_and_disconnect(): | CODE |
| LOW | tests/feature_cases/test_chromium_browser_contracts.py | 612 | def test_chromium_frame_properties_delegation_and_bookkeeping(): | CODE |
| LOW | tests/feature_cases/test_locator_edge_contracts.py | 31 | def test_single_locator_forms(): | CODE |
| LOW | tests/feature_cases/test_locator_edge_contracts.py | 103 | def test_selenium_and_ax_edges(): | CODE |
| LOW | tests/feature_cases/test_regression_basics.py | 22 | def test_no_browser_regressions(): | CODE |
| LOW | tests/feature_cases/browser_interaction_server.py | 8 | def browser_interaction_routes(): | CODE |
| LOW | tests/feature_cases/browser_interaction_server.py | 63 | def browser_interaction_server(): | CODE |
| LOW | tests/feature_cases/test_chromium_element_contracts.py | 222 | def _check_construction_and_identity(): | CODE |
| LOW | tests/feature_cases/test_chromium_element_contracts.py | 258 | def _check_content_and_attribute_contracts(): | CODE |
| LOW | tests/feature_cases/test_chromium_element_contracts.py | 307 | def _check_session_snapshot_contracts(): | CODE |
| LOW | tests/feature_cases/test_chromium_element_contracts.py | 331 | def _check_accessor_and_setter_wiring(): | CODE |
| LOW | tests/feature_cases/test_chromium_element_contracts.py | 368 | def _check_traversal_delegation(): | CODE |
| LOW | tests/feature_cases/test_chromium_element_contracts.py | 412 | def _check_element_actions_and_resources(): | CODE |
| LOW | tests/feature_cases/test_chromium_element_contracts.py | 462 | def _check_javascript_payloads(): | CODE |
| LOW | tests/feature_cases/test_small_unit_edge_contracts.py | 257 | def test_rect_and_state_edges(): | CODE |
| LOW | tests/feature_cases/test_element_locators.py | 22 | def test_no_browser_locator_contracts(): | CODE |
| LOW | tests/feature_cases/test_element_locators.py | 51 | def test_browser_locator_contracts(executable): | STRING |
| LOW | tests/feature_cases/test_browser_helper_contracts.py | 87 | def test_launch_argument_contracts(): | CODE |
| LOW | tests/feature_cases/test_browser_helper_contracts.py | 138 | def test_preference_contracts(): | CODE |
| LOW | tests/feature_cases/test_browser_helper_contracts.py | 225 | def test_connection_contracts(): | CODE |
| LOW | tests/feature_cases/test_browser_helper_contracts.py | 371 | def test_process_invocation_contracts(): | CODE |
| LOW | tests/feature_cases/test_browser_helper_contracts.py | 399 | def test_port_and_folder_contracts(): | CODE |
| LOW | tests/feature_cases/test_browser_helper_contracts.py | 471 | def test_wait_and_error_contracts(): | CODE |
| LOW | tests/feature_cases/test_element_core_behaviors.py | 22 | def _check_session_element_contracts() -> None: | CODE |
| LOW | tests/feature_cases/test_element_core_behaviors.py | 37 | def _check_browser_element_contracts(ctx) -> None: | STRING |
| 39 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/run.py | 4 | CODE | |
| LOW | tests/runner.py | 4 | CODE | |
| LOW | tests/support.py | 8 | CODE | |
| LOW | tests/check_runner_quality.py | 4 | CODE | |
| LOW | tests/check_ci_retry.py | 4 | CODE | |
| LOW | tests/feature_manifest.py | 9 | CODE | |
| LOW | tests/check_workflow_quality.py | 10 | CODE | |
| LOW | tests/feature_cases/test_unit_wrapper_contracts.py | 2 | CODE | |
| LOW | …ts/feature_cases/test_chromium_base_extra_contracts.py | 2 | CODE | |
| LOW | tests/feature_cases/test_listener_basics.py | 2 | CODE | |
| LOW | tests/feature_cases/test_options_settings.py | 2 | CODE | |
| LOW | tests/feature_cases/test_proxy_credentials.py | 2 | CODE | |
| LOW | tests/feature_cases/test_base_page_contracts.py | 2 | CODE | |
| LOW | tests/feature_cases/test_ssr_site_smoke.py | 2 | CODE | |
| LOW | tests/feature_cases/test_ssr_social_notes_mobile.py | 2 | CODE | |
| LOW | …sts/feature_cases/test_cross_origin_iframe_listener.py | 2 | CODE | |
| LOW | tests/feature_cases/test_tab_management.py | 2 | CODE | |
| LOW | tests/feature_cases/test_ssr_marketplace_flow.py | 2 | CODE | |
| LOW | tests/feature_cases/test_config_session_contracts.py | 2 | CODE | |
| LOW | tests/feature_cases/test_runtime_unit_contracts.py | 2 | CODE | |
| LOW | tests/feature_cases/test_download_management.py | 2 | CODE | |
| LOW | tests/feature_cases/test_startup_settings.py | 2 | CODE | |
| LOW | tests/feature_cases/test_pure_function_contracts.py | 2 | CODE | |
| LOW | tests/feature_cases/test_recommended_chromium_entry.py | 2 | CODE | |
| LOW | …eature_cases/test_browser_lifecycle_extra_contracts.py | 2 | CODE | |
| LOW | tests/feature_cases/test_navigation_result.py | 2 | CODE | |
| LOW | tests/feature_cases/test_navigation_basics.py | 2 | CODE | |
| LOW | tests/feature_cases/test_chromium_browser_contracts.py | 2 | CODE | |
| LOW | tests/feature_cases/test_page_object_basics.py | 2 | CODE | |
| LOW | tests/feature_cases/test_locator_edge_contracts.py | 2 | CODE | |
| LOW | tests/feature_cases/test_tab_post_response.py | 2 | CODE | |
| LOW | tests/feature_cases/test_frame_shadow_setters.py | 2 | CODE | |
| LOW | tests/feature_cases/test_regression_basics.py | 2 | CODE | |
| LOW | tests/feature_cases/test_browser_contexts.py | 2 | CODE | |
| LOW | tests/feature_cases/browser_interaction_server.py | 3 | CODE | |
| LOW | tests/feature_cases/test_chromium_element_contracts.py | 2 | CODE | |
| LOW | tests/feature_cases/test_scroll_and_waits.py | 2 | CODE | |
| LOW | tests/feature_cases/test_optional_online_smoke.py | 2 | CODE | |
| LOW | tests/feature_cases/core_feature_server.py | 3 | CODE | |
| LOW | …sts/feature_cases/test_cross_origin_iframe_elements.py | 2 | CODE | |
| LOW | tests/feature_cases/test_mouse_trail.py | 2 | CODE | |
| LOW | tests/feature_cases/test_small_unit_edge_contracts.py | 2 | CODE | |
| LOW | tests/feature_cases/test_element_locators.py | 2 | CODE | |
| LOW | tests/feature_cases/test_browser_helper_contracts.py | 2 | CODE | |
| LOW | tests/feature_cases/test_element_core_behaviors.py | 2 | CODE | |
| LOW | …ts/feature_cases/test_waiter_setter_extra_contracts.py | 2 | CODE | |
| LOW | tests/feature_cases/test_chromium_tab_management.py | 2 | CODE | |
| LOW | tests/feature_cases/ssr_test_site.py | 2 | CODE | |
| LOW | …sts/feature_cases/test_chromium_options_environment.py | 2 | CODE | |
| LOW | tests/feature_cases/test_element_multi_click.py | 2 | CODE | |
| LOW | tests/feature_cases/test_api_behavior_changes.py | 2 | CODE | |
| LOW | tests/feature_cases/test_listener_upgrade.py | 2 | CODE | |
| LOW | tests/feature_cases/test_collection_action_contracts.py | 2 | CODE | |
| LOW | tests/feature_cases/test_listener_data_contracts.py | 2 | CODE | |
| LOW | tests/feature_cases/test_find_api.py | 2 | CODE | |
| LOW | tests/feature_cases/test_browser_download.py | 2 | CODE | |
| LOW | …feature_cases/test_chromium_element_extra_contracts.py | 2 | CODE | |
| LOW | tests/feature_cases/test_permissions.py | 2 | CODE | |
| LOW | tests/feature_cases/test_cookie_setters.py | 2 | CODE | |
| LOW | tests/feature_cases/test_console_and_cookie_formats.py | 2 | CODE | |
| 39 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/runner.py | 301 | CODE | |
| LOW | tests/support.py | 237 | CODE | |
| LOW | tests/feature_cases/test_tab_management.py | 11 | CODE | |
| LOW | tests/feature_cases/test_chromium_tab_management.py | 11 | CODE | |
| LOW | tests/feature_cases/test_console_and_cookie_formats.py | 13 | CODE | |
| LOW | tests/regression_cases/test_listener_ws_sse.py | 13 | CODE | |
| LOW | DrissionPage/_functions/cookies.py | 18 | CODE | |
| LOW | DrissionPage/_functions/cookies.py | 47 | CODE | |
| LOW | DrissionPage/_functions/cookies.py | 102 | CODE | |
| LOW | DrissionPage/_functions/cookies.py | 163 | CODE | |
| LOW | DrissionPage/_functions/web.py | 20 | CODE | |
| LOW | DrissionPage/_functions/web.py | 257 | CODE | |
| LOW | DrissionPage/_functions/web.py | 36 | CODE | |
| LOW | DrissionPage/_functions/web.py | 258 | CODE | |
| LOW | DrissionPage/_functions/elements.py | 303 | CODE | |
| LOW | DrissionPage/_functions/elements.py | 82 | CODE | |
| LOW | DrissionPage/_functions/elements.py | 102 | CODE | |
| LOW | DrissionPage/_functions/elements.py | 121 | CODE | |
| LOW | DrissionPage/_functions/elements.py | 198 | CODE | |
| LOW | DrissionPage/_functions/tools.py | 68 | CODE | |
| LOW | DrissionPage/_functions/tools.py | 166 | CODE | |
| LOW | DrissionPage/_functions/locator.py | 15 | CODE | |
| LOW | DrissionPage/_functions/locator.py | 118 | CODE | |
| LOW | DrissionPage/_functions/locator.py | 147 | CODE | |
| LOW | DrissionPage/_functions/locator.py | 199 | CODE | |
| LOW | DrissionPage/_functions/locator.py | 255 | CODE | |
| LOW | DrissionPage/_functions/locator.py | 318 | CODE | |
| LOW | DrissionPage/_functions/locator.py | 394 | CODE | |
| LOW | DrissionPage/_functions/locator.py | 465 | CODE | |
| LOW | DrissionPage/_functions/locator.py | 503 | CODE | |
| LOW | DrissionPage/_functions/locator.py | 549 | CODE | |
| LOW | DrissionPage/_functions/browser.py | 23 | CODE | |
| LOW | DrissionPage/_functions/browser.py | 93 | CODE | |
| LOW | DrissionPage/_functions/browser.py | 279 | CODE | |
| LOW | DrissionPage/_functions/browser.py | 345 | CODE | |
| LOW | DrissionPage/_configs/chromium_options.py | 174 | CODE | |
| LOW | DrissionPage/_configs/options_manage.py | 16 | CODE | |
| LOW | DrissionPage/_pages/chromium_base.py | 526 | CODE | |
| LOW | DrissionPage/_pages/chromium_base.py | 790 | CODE | |
| LOW | DrissionPage/_pages/chromium_frame.py | 401 | CODE | |
| LOW | DrissionPage/_pages/session_page.py | 187 | CODE | |
| LOW | DrissionPage/_units/downloader.py | 169 | CODE | |
| LOW | DrissionPage/_units/downloader.py | 267 | CODE | |
| LOW | DrissionPage/_units/clicker.py | 26 | CODE | |
| LOW | DrissionPage/_units/actions.py | 198 | CODE | |
| LOW | DrissionPage/_units/actions.py | 226 | CODE | |
| LOW | DrissionPage/_units/listener.py | 161 | CODE | |
| LOW | DrissionPage/_units/listener.py | 192 | CODE | |
| LOW | DrissionPage/_units/listener.py | 426 | CODE | |
| LOW | DrissionPage/_units/listener.py | 463 | CODE | |
| LOW | DrissionPage/_units/listener.py | 653 | CODE | |
| LOW | DrissionPage/_units/listener.py | 669 | CODE | |
| LOW | DrissionPage/_units/listener.py | 712 | CODE | |
| LOW | DrissionPage/_units/listener.py | 727 | CODE | |
| LOW | DrissionPage/_browsers/chromium.py | 494 | CODE | |
| LOW | DrissionPage/_browsers/chromium.py | 512 | CODE | |
| LOW | DrissionPage/_browsers/chromium.py | 427 | CODE | |
| LOW | DrissionPage/_base/driver.py | 109 | CODE | |
| LOW | DrissionPage/_base/driver.py | 231 | CODE | |
| LOW | DrissionPage/_elements/chromium_element.py | 948 | CODE | |
| 10 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/runner.py | 291 | except Exception as exc: | CODE |
| LOW | tests/support.py | 179 | except Exception: | CODE |
| LOW | tests/support.py | 191 | except Exception: | CODE |
| LOW | tests/support.py | 197 | except Exception: | CODE |
| LOW | tests/support.py | 378 | except Exception: | STRING |
| LOW | tests/support.py | 411 | except Exception: | STRING |
| MEDIUM | tests/support.py | 408 | def _send_ws_close(self) -> None: | CODE |
| LOW | tests/feature_cases/test_base_page_contracts.py | 44 | except Exception as exc: | CODE |
| MEDIUM | tests/feature_cases/test_base_page_contracts.py | 39 | def _expect_error(error_type, action, message): | CODE |
| LOW | tests/feature_cases/test_ssr_social_notes_mobile.py | 77 | except Exception: | STRING |
| LOW | tests/feature_cases/test_tab_management.py | 33 | except Exception: | CODE |
| LOW | tests/feature_cases/test_config_session_contracts.py | 301 | except Exception as exc: | STRING |
| LOW | tests/feature_cases/test_pure_function_contracts.py | 493 | except Exception as error: | CODE |
| MEDIUM | tests/feature_cases/test_pure_function_contracts.py | 488 | def _assert_raises(error_type, func, *args, **kwargs): | CODE |
| LOW | …eature_cases/test_browser_lifecycle_extra_contracts.py | 66 | except Exception as error: | CODE |
| MEDIUM | …eature_cases/test_browser_lifecycle_extra_contracts.py | 61 | def _assert_raises(expected, func, *args, **kwargs): | CODE |
| LOW | tests/feature_cases/test_chromium_browser_contracts.py | 59 | except Exception as error: | CODE |
| MEDIUM | tests/feature_cases/test_chromium_browser_contracts.py | 54 | def _assert_raises(expected, func, *args, **kwargs): | CODE |
| LOW | tests/feature_cases/test_browser_helper_contracts.py | 66 | except Exception as error: | CODE |
| MEDIUM | tests/feature_cases/test_browser_helper_contracts.py | 61 | def _assert_raises(expected, func, *args, **kwargs): | CODE |
| LOW | …ts/feature_cases/test_waiter_setter_extra_contracts.py | 75 | except Exception as error: | CODE |
| MEDIUM | …ts/feature_cases/test_waiter_setter_extra_contracts.py | 70 | def _assert_raises(expected, func, *args, **kwargs): | CODE |
| LOW | tests/feature_cases/test_chromium_tab_management.py | 35 | except Exception: | CODE |
| LOW | tests/feature_cases/test_chromium_tab_management.py | 51 | except Exception: | CODE |
| LOW | tests/feature_cases/test_listener_data_contracts.py | 571 | except Exception as exc: | CODE |
| MEDIUM | tests/feature_cases/test_listener_data_contracts.py | 566 | def _expect_error(error_type, action, message): | CODE |
| LOW | tests/regression_cases/test_listener_ws_sse.py | 31 | except Exception as e: | CODE |
| LOW | tests/regression_cases/test_listener_ws_sse.py | 49 | except Exception as e: | CODE |
| LOW | tests/regression_cases/test_listener_ws_sse.py | 61 | except Exception as e: | CODE |
| LOW | tests/regression_cases/test_listener_ws_sse.py | 87 | except Exception as e: | CODE |
| LOW | tests/regression_cases/test_navigation_result.py | 36 | except Exception as e: | CODE |
| LOW | tests/regression_cases/test_alert_on_open.py | 34 | except Exception: | CODE |
| LOW | tests/regression_cases/test_locator_behavior.py | 60 | except Exception as exc: | CODE |
| LOW | tests/regression_cases/test_no_browser_contract_gaps.py | 29 | except Exception as exc: | CODE |
| LOW | tests/regression_cases/test_no_browser_contract_gaps.py | 37 | except Exception as exc: | CODE |
| LOW | tests/regression_cases/test_no_browser_contract_gaps.py | 59 | except Exception as exc: | CODE |
| LOW | DrissionPage/_functions/cookies.py | 120 | except Exception: | CODE |
| LOW | DrissionPage/_functions/browser.py | 207 | except Exception: | CODE |
| LOW | DrissionPage/_functions/browser.py | 292 | except Exception: | CODE |
| MEDIUM | DrissionPage/_functions/browser.py | 201 | def do(): | CODE |
| LOW | DrissionPage/_configs/options_manage.py | 97 | except Exception: | CODE |
| LOW | DrissionPage/_pages/chromium_frame.py | 66 | except Exception as e: | CODE |
| LOW | DrissionPage/_pages/session_page.py | 75 | except Exception: | CODE |
| LOW | DrissionPage/_pages/session_page.py | 230 | except Exception as e: | CODE |
| MEDIUM | DrissionPage/_pages/session_page.py | 72 | def json(self): | CODE |
| LOW | DrissionPage/_browsers/chromium.py | 519 | except Exception as e: | CODE |
| MEDIUM | DrissionPage/_browsers/chromium.py | 323 | def activate_tab(self, id_ind_tab): | CODE |
| MEDIUM | DrissionPage/_elements/chromium_element.py | 98 | def attrs(self): | CODE |
| MEDIUM | DrissionPage/_elements/chromium_element.py | 571 | def focus(self): | CODE |
| LOW | DrissionPage/_elements/chromium_element.py | 568 | except Exception: | CODE |
| LOW | DrissionPage/_elements/chromium_element.py | 574 | except Exception: | CODE |
| LOW | DrissionPage/_elements/chromium_element.py | 1249 | except Exception: | CODE |
| LOW | DrissionPage/_elements/session_element.py | 294 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | DrissionPage/_units/clicker.py | 105 | curr_tid = self._ele.tab.browser._tabs.get_newest_tab(self._ele.tab._context_id) | CODE |
| CRITICAL | DrissionPage/_units/clicker.py | 108 | tid = self._ele.tab.browser.wait._new_tab(self._ele.tab._context_id, curr_tab=curr_tid) | CODE |
| CRITICAL | DrissionPage/_units/clicker.py | 127 | self._ele.tab._browser.set.download_path('.') | CODE |
| CRITICAL | DrissionPage/_units/clicker.py | 173 | self._ele.owner.browser._dl_mgr._tab_missions.setdefault(self._ele.owner.tab_id, set()).add(m) | CODE |
| CRITICAL | DrissionPage/_units/clicker.py | 184 | curr_tid = self._ele.tab.browser._tabs.get_newest_tab(self._ele.tab._context_id) | CODE |
| CRITICAL | DrissionPage/_units/clicker.py | 186 | tid = self._ele.tab.browser.wait._new_tab(self._ele.tab._context_id, timeout=timeout, curr_tab=curr_tid) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | DrissionPage/_functions/elements.py | 384 | CODE | |
| LOW | DrissionPage/_functions/elements.py | 419 | CODE | |
| LOW | DrissionPage/_functions/elements.py | 62 | CODE | |
| LOW | DrissionPage/_functions/elements.py | 67 | CODE | |
| LOW | DrissionPage/_functions/elements.py | 233 | CODE | |
| LOW | DrissionPage/_functions/elements.py | 238 | CODE | |
| LOW | DrissionPage/_pages/chromium_base.py | 790 | CODE | |
| LOW | DrissionPage/_pages/chromium_frame.py | 401 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | DrissionPage/_functions/keys.py | 281 | # 'KeyK': {'keyCode': 75, 'code': 'KeyK', 'shiftKey': 'K', 'key': 'k'}, | COMMENT |
| LOW | DrissionPage/_functions/keys.py | 301 | # 'F14': {'keyCode': 125, 'code': 'F14', 'key': 'F14'}, | COMMENT |
| LOW | DrissionPage/_functions/keys.py | 321 | # 'Equal': {'keyCode': 187, 'code': 'Equal', 'shiftKey': '+', 'key': '='}, | COMMENT |
| LOW | DrissionPage/_elements/chromium_element.py | 1401 | # | COMMENT |
| LOW | DrissionPage/_elements/chromium_element.py | 1421 | # obj_ids = [i['value']['objectId'] for i in ele.owner._run_cdp('Runtime.getProperties', | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/feature_cases/test_element_core_behaviors.py | 78 | def _set_checked(checkbox, checked: bool) -> None: | STRING |
| LOW | tests/regression_cases/test_locator_behavior.py | 8 | def set_checked(checkbox, checked: bool) -> None: | CODE |
| LOW | DrissionPage/common.py | 18 | __all__ = ['make_session_ele', 'Actions', 'Keys', 'By', 'Settings', 'wait_until', 'configs_to_here', 'get_blob', | CODE |
| LOW | DrissionPage/items.py | 18 | __all__ = ['ChromiumElement', 'ShadowRoot', 'NoneElement', 'SessionElement', 'NavResult', | CODE |
| LOW | DrissionPage/_functions/browser.py | 248 | def _set_value_to_dict(target_dict: dict, src: list, value) -> None: | CODE |