zendriver-patch 0.15.3.post1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- zendriver_patch-0.15.3.post1/.dockerignore +9 -0
- zendriver_patch-0.15.3.post1/.github/CODEOWNERS +1 -0
- zendriver_patch-0.15.3.post1/.github/FUNDING.yml +1 -0
- zendriver_patch-0.15.3.post1/.github/pull_request_template.md +16 -0
- zendriver_patch-0.15.3.post1/.github/workflows/close-inactive-issues-prs.yml +26 -0
- zendriver_patch-0.15.3.post1/.github/workflows/docs.yml +36 -0
- zendriver_patch-0.15.3.post1/.github/workflows/lint.yml +25 -0
- zendriver_patch-0.15.3.post1/.github/workflows/publish.yml +21 -0
- zendriver_patch-0.15.3.post1/.github/workflows/test.yml +37 -0
- zendriver_patch-0.15.3.post1/.gitignore +91 -0
- zendriver_patch-0.15.3.post1/CHANGELOG.md +387 -0
- zendriver_patch-0.15.3.post1/CONTRIBUTING.md +152 -0
- zendriver_patch-0.15.3.post1/LICENSE +619 -0
- zendriver_patch-0.15.3.post1/PKG-INFO +734 -0
- zendriver_patch-0.15.3.post1/README.md +88 -0
- zendriver_patch-0.15.3.post1/codecov.yml +2 -0
- zendriver_patch-0.15.3.post1/docker-compose.yml +26 -0
- zendriver_patch-0.15.3.post1/docs/CNAME +1 -0
- zendriver_patch-0.15.3.post1/docs/index.md +1 -0
- zendriver_patch-0.15.3.post1/docs/quickstart.md +184 -0
- zendriver_patch-0.15.3.post1/docs/stylesheets/extra.css +0 -0
- zendriver_patch-0.15.3.post1/docs/tutorials/account-creation.md +37 -0
- zendriver_patch-0.15.3.post1/docs/tutorials/api-responses.md +19 -0
- zendriver_patch-0.15.3.post1/docs/tutorials/cdp.md +20 -0
- zendriver_patch-0.15.3.post1/docs/tutorials/great-power.jpg +0 -0
- zendriver_patch-0.15.3.post1/docs/tutorials/index.md +14 -0
- zendriver_patch-0.15.3.post1/docs/tutorials/infinite-scrolling.md +31 -0
- zendriver_patch-0.15.3.post1/docs/tutorials/tutorial-code/account-creation-1.py +18 -0
- zendriver_patch-0.15.3.post1/docs/tutorials/tutorial-code/account-creation-2.py +73 -0
- zendriver_patch-0.15.3.post1/docs/tutorials/tutorial-code/api-responses-1.py +18 -0
- zendriver_patch-0.15.3.post1/docs/tutorials/tutorial-code/api-responses-2.py +26 -0
- zendriver_patch-0.15.3.post1/docs/tutorials/tutorial-code/cdp-1.py +22 -0
- zendriver_patch-0.15.3.post1/docs/tutorials/tutorial-code/cdp-2.py +37 -0
- zendriver_patch-0.15.3.post1/docs/tutorials/tutorial-code/infinite-scrolling-1.py +21 -0
- zendriver_patch-0.15.3.post1/docs/tutorials/tutorial-code/infinite-scrolling-2.py +34 -0
- zendriver_patch-0.15.3.post1/docs/tutorials/tutorial-code/infinite-scrolling-3.py +49 -0
- zendriver_patch-0.15.3.post1/examples/browserscan.py +14 -0
- zendriver_patch-0.15.3.post1/examples/demo.py +190 -0
- zendriver_patch-0.15.3.post1/examples/expect_download.py +27 -0
- zendriver_patch-0.15.3.post1/examples/fetch_domain.py +44 -0
- zendriver_patch-0.15.3.post1/examples/imgur_upload_image.py +92 -0
- zendriver_patch-0.15.3.post1/examples/mouse_drag_boxes.py +73 -0
- zendriver_patch-0.15.3.post1/examples/network_monitor.py +65 -0
- zendriver_patch-0.15.3.post1/examples/set_user_agent.py +19 -0
- zendriver_patch-0.15.3.post1/examples/wait_for_page.py +23 -0
- zendriver_patch-0.15.3.post1/mkdocs.yml +125 -0
- zendriver_patch-0.15.3.post1/pyproject.toml +95 -0
- zendriver_patch-0.15.3.post1/scripts/format.sh +9 -0
- zendriver_patch-0.15.3.post1/scripts/generate_cdp.py +1065 -0
- zendriver_patch-0.15.3.post1/scripts/lint.sh +13 -0
- zendriver_patch-0.15.3.post1/scripts/mkdocs_generate_all.sh +7 -0
- zendriver_patch-0.15.3.post1/scripts/mkdocs_generate_index.py +20 -0
- zendriver_patch-0.15.3.post1/scripts/mkdocs_generate_reference.py +116 -0
- zendriver_patch-0.15.3.post1/scripts/mkdocs_generate_release_notes.py +38 -0
- zendriver_patch-0.15.3.post1/scripts/release.py +301 -0
- zendriver_patch-0.15.3.post1/scripts/test.sh +17 -0
- zendriver_patch-0.15.3.post1/tests/Dockerfile +44 -0
- zendriver_patch-0.15.3.post1/tests/__init__.py +0 -0
- zendriver_patch-0.15.3.post1/tests/bot_detection/__init__.py +0 -0
- zendriver_patch-0.15.3.post1/tests/bot_detection/test_browserscan.py +19 -0
- zendriver_patch-0.15.3.post1/tests/conftest.py +137 -0
- zendriver_patch-0.15.3.post1/tests/core/__init__.py +0 -0
- zendriver_patch-0.15.3.post1/tests/core/test_browser.py +112 -0
- zendriver_patch-0.15.3.post1/tests/core/test_keyinputs.py +69 -0
- zendriver_patch-0.15.3.post1/tests/core/test_multiple_browsers.py +47 -0
- zendriver_patch-0.15.3.post1/tests/core/test_react_controlled_input.py +111 -0
- zendriver_patch-0.15.3.post1/tests/core/test_tab.py +444 -0
- zendriver_patch-0.15.3.post1/tests/docs/__init__.py +19 -0
- zendriver_patch-0.15.3.post1/tests/docs/conftest.py +16 -0
- zendriver_patch-0.15.3.post1/tests/docs/tutorials/__init__.py +0 -0
- zendriver_patch-0.15.3.post1/tests/docs/tutorials/test_account_creation_tutorial.py +27 -0
- zendriver_patch-0.15.3.post1/tests/docs/tutorials/test_api_responses_tutorial.py +25 -0
- zendriver_patch-0.15.3.post1/tests/docs/tutorials/test_cdp_tutorial.py +23 -0
- zendriver_patch-0.15.3.post1/tests/docs/tutorials/test_infinite_scrolling_tutorial.py +44 -0
- zendriver_patch-0.15.3.post1/tests/next_test.sh +9 -0
- zendriver_patch-0.15.3.post1/tests/sample_data/__init__.py +6 -0
- zendriver_patch-0.15.3.post1/tests/sample_data/complex_object.html +87 -0
- zendriver_patch-0.15.3.post1/tests/sample_data/groceries.html +41 -0
- zendriver_patch-0.15.3.post1/tests/sample_data/profile.html +23 -0
- zendriver_patch-0.15.3.post1/tests/sample_data/react-controlled-input-test.html +86 -0
- zendriver_patch-0.15.3.post1/tests/sample_data/simple_editor.html +26 -0
- zendriver_patch-0.15.3.post1/tests/sample_data/simple_json.html +13 -0
- zendriver_patch-0.15.3.post1/tests/sample_data/special_key_detector.html +207 -0
- zendriver_patch-0.15.3.post1/uv.lock +1128 -0
- zendriver_patch-0.15.3.post1/zendriver/__init__.py +34 -0
- zendriver_patch-0.15.3.post1/zendriver/_version.py +1 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/README.md +4 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/__init__.py +63 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/accessibility.py +714 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/animation.py +509 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/audits.py +2430 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/autofill.py +296 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/background_service.py +224 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/bluetooth_emulation.py +653 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/browser.py +839 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/cache_storage.py +315 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/cast.py +168 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/console.py +109 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/crash_report_context.py +58 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/css.py +2994 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/debugger.py +1531 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/device_access.py +142 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/device_orientation.py +45 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/dom.py +2344 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/dom_debugger.py +322 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/dom_snapshot.py +1022 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/dom_storage.py +220 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/emulation.py +1822 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/event_breakpoints.py +56 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/extensions.py +239 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/fed_cm.py +287 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/fetch.py +535 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/file_system.py +117 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/headless_experimental.py +126 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/heap_profiler.py +403 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/indexed_db.py +548 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/input_.py +715 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/inspector.py +85 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/io.py +104 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/layer_tree.py +507 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/log.py +203 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/media.py +324 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/memory.py +318 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/network.py +5856 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/overlay.py +1645 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/page.py +4214 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/performance.py +126 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/performance_timeline.py +213 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/preload.py +663 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/profiler.py +445 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/pwa.py +277 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/py.typed +0 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/runtime.py +1762 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/schema.py +51 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/security.py +558 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/service_worker.py +402 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/smart_card_emulation.py +907 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/storage.py +1656 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/system_info.py +353 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/target.py +859 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/tethering.py +59 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/tracing.py +408 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/util.py +19 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/web_audio.py +636 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/web_authn.py +635 -0
- zendriver_patch-0.15.3.post1/zendriver/cdp/web_mcp.py +238 -0
- zendriver_patch-0.15.3.post1/zendriver/core/__init__.py +0 -0
- zendriver_patch-0.15.3.post1/zendriver/core/_contradict.py +124 -0
- zendriver_patch-0.15.3.post1/zendriver/core/browser.py +880 -0
- zendriver_patch-0.15.3.post1/zendriver/core/cloudflare.py +269 -0
- zendriver_patch-0.15.3.post1/zendriver/core/config.py +392 -0
- zendriver_patch-0.15.3.post1/zendriver/core/connection.py +937 -0
- zendriver_patch-0.15.3.post1/zendriver/core/element.py +1263 -0
- zendriver_patch-0.15.3.post1/zendriver/core/expect.py +232 -0
- zendriver_patch-0.15.3.post1/zendriver/core/intercept.py +171 -0
- zendriver_patch-0.15.3.post1/zendriver/core/keys.py +595 -0
- zendriver_patch-0.15.3.post1/zendriver/core/tab.py +1733 -0
- zendriver_patch-0.15.3.post1/zendriver/core/util.py +361 -0
- zendriver_patch-0.15.3.post1/zendriver/py.typed +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
* @cdpdriver/cdpdriver-developers
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
github: [ stephanlensky, nathanfallet ]
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
## Description
|
|
2
|
+
|
|
3
|
+
<!-- Please describe your change below this line -->
|
|
4
|
+
|
|
5
|
+
## Pre-merge Checklist
|
|
6
|
+
|
|
7
|
+
<!--
|
|
8
|
+
Check each box by marking it with an x, like this: "- [x]"
|
|
9
|
+
|
|
10
|
+
Before creating your pull request, please ensure each item is completed.
|
|
11
|
+
-->
|
|
12
|
+
|
|
13
|
+
- [ ] I have described my change in the section above.
|
|
14
|
+
- [ ] I have ran the [`./scripts/format.sh`](https://github.com/cdpdriver/zendriver/blob/main/scripts/format.sh) and [`./scripts/lint.sh`](https://github.com/cdpdriver/zendriver/blob/main/scripts/lint.sh) scripts. My code is properly formatted and has no linting errors.
|
|
15
|
+
- [ ] I have ran `uv run pytest` and ensured all tests pass.
|
|
16
|
+
- [ ] I have added my change to [CHANGELOG.md](https://github.com/cdpdriver/zendriver/blob/main/CHANGELOG.md) under the `[Unreleased]` section.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
name: Close inactive issues
|
|
2
|
+
on:
|
|
3
|
+
schedule:
|
|
4
|
+
- cron: "30 1 * * *"
|
|
5
|
+
workflow_dispatch:
|
|
6
|
+
jobs:
|
|
7
|
+
close-issues:
|
|
8
|
+
runs-on: ubuntu-latest
|
|
9
|
+
permissions:
|
|
10
|
+
issues: write
|
|
11
|
+
pull-requests: write
|
|
12
|
+
steps:
|
|
13
|
+
- uses: actions/stale@v9
|
|
14
|
+
with:
|
|
15
|
+
days-before-issue-stale: 30
|
|
16
|
+
days-before-issue-close: 7
|
|
17
|
+
stale-issue-label: "stale"
|
|
18
|
+
stale-issue-message: "This issue has been marked stale because it has been open for 30 days with no activity. If there is no activity within 7 days, it will be automatically closed."
|
|
19
|
+
close-issue-message: "This issue was automatically closed because it has been inactive for 7 days since being marked as stale."
|
|
20
|
+
only-issue-labels: "question"
|
|
21
|
+
days-before-pr-stale: 30
|
|
22
|
+
days-before-pr-close: 7
|
|
23
|
+
stale-pr-label: "stale"
|
|
24
|
+
stale-pr-message: "This pull request has been marked stale because it has been open for 30 days with no activity. If there is no activity within 7 days, it will be automatically closed."
|
|
25
|
+
close-pr-message: "This pull request was automatically closed because it has been inactive for 7 days since being marked as stale."
|
|
26
|
+
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
name: docs
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
branches:
|
|
5
|
+
- main
|
|
6
|
+
paths:
|
|
7
|
+
- "docs/**"
|
|
8
|
+
# Files which are used during doc generation
|
|
9
|
+
- "mkdocs.yml"
|
|
10
|
+
- "README.md"
|
|
11
|
+
- "CHANGELOG.md"
|
|
12
|
+
- "zendriver/cdp/**"
|
|
13
|
+
workflow_dispatch:
|
|
14
|
+
permissions:
|
|
15
|
+
contents: write
|
|
16
|
+
jobs:
|
|
17
|
+
docs:
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@v4
|
|
21
|
+
- name: Configure Git Credentials
|
|
22
|
+
run: |
|
|
23
|
+
git config user.name github-actions[bot]
|
|
24
|
+
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
|
|
25
|
+
- name: Install uv
|
|
26
|
+
uses: astral-sh/setup-uv@v3
|
|
27
|
+
- name: Set up Python
|
|
28
|
+
run: uv python install
|
|
29
|
+
- name: Install dependencies
|
|
30
|
+
run: uv sync --all-extras --dev
|
|
31
|
+
- name: Auto-generate docs
|
|
32
|
+
run: |
|
|
33
|
+
uv run python scripts/mkdocs_generate_reference.py
|
|
34
|
+
uv run python scripts/mkdocs_generate_release_notes.py
|
|
35
|
+
- name: Deploy to GitHub Pages
|
|
36
|
+
run: uv run mkdocs gh-deploy --force
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
name: lint
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
branches:
|
|
5
|
+
- main
|
|
6
|
+
paths:
|
|
7
|
+
- "**.py"
|
|
8
|
+
pull_request:
|
|
9
|
+
branches:
|
|
10
|
+
- main
|
|
11
|
+
paths:
|
|
12
|
+
- "**.py"
|
|
13
|
+
jobs:
|
|
14
|
+
lint:
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v4
|
|
18
|
+
- name: Install uv
|
|
19
|
+
uses: astral-sh/setup-uv@v3
|
|
20
|
+
- name: Set up Python
|
|
21
|
+
run: uv python install
|
|
22
|
+
- name: Install dependencies
|
|
23
|
+
run: uv sync --all-extras --dev
|
|
24
|
+
- name: Lint with ruff/mypy
|
|
25
|
+
run: /bin/bash ./scripts/lint.sh
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
name: publish
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
tags:
|
|
5
|
+
- "*"
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
jobs:
|
|
8
|
+
publish:
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
steps:
|
|
11
|
+
- uses: actions/checkout@v4
|
|
12
|
+
- name: Install uv
|
|
13
|
+
uses: astral-sh/setup-uv@v3
|
|
14
|
+
- name: Set up Python
|
|
15
|
+
run: uv python install
|
|
16
|
+
- name: Build wheel
|
|
17
|
+
run: uv build
|
|
18
|
+
- name: Publish to PyPI
|
|
19
|
+
run: uv publish
|
|
20
|
+
env:
|
|
21
|
+
UV_PUBLISH_TOKEN: ${{ secrets.UV_PUBLISH_TOKEN }}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
name: test
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
branches:
|
|
5
|
+
- main
|
|
6
|
+
paths:
|
|
7
|
+
- "**.py"
|
|
8
|
+
pull_request:
|
|
9
|
+
branches:
|
|
10
|
+
- main
|
|
11
|
+
paths:
|
|
12
|
+
- "**.py"
|
|
13
|
+
workflow_dispatch:
|
|
14
|
+
jobs:
|
|
15
|
+
test:
|
|
16
|
+
runs-on: ${{ matrix.os }}
|
|
17
|
+
strategy:
|
|
18
|
+
matrix:
|
|
19
|
+
os: [ ubuntu-latest, windows-latest ]
|
|
20
|
+
steps:
|
|
21
|
+
- uses: actions/checkout@v4
|
|
22
|
+
- name: Install uv
|
|
23
|
+
uses: astral-sh/setup-uv@v3
|
|
24
|
+
- name: Set up Python
|
|
25
|
+
run: uv python install
|
|
26
|
+
- name: Install dependencies
|
|
27
|
+
run: uv sync --all-extras --dev
|
|
28
|
+
- name: Run tests
|
|
29
|
+
env:
|
|
30
|
+
ZENDRIVER_TEST_BROWSERS: "headless"
|
|
31
|
+
ZENDRIVER_TEST_NO_SANDBOX: "true"
|
|
32
|
+
shell: bash
|
|
33
|
+
run: ./scripts/test.sh
|
|
34
|
+
- name: Upload coverage to Codecov
|
|
35
|
+
uses: codecov/codecov-action@v5
|
|
36
|
+
env:
|
|
37
|
+
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# mkdocs build
|
|
2
|
+
site/
|
|
3
|
+
|
|
4
|
+
# auto-generated docs
|
|
5
|
+
docs/reference
|
|
6
|
+
docs/release-notes.md
|
|
7
|
+
|
|
8
|
+
# uv/pyenv
|
|
9
|
+
.python-version
|
|
10
|
+
|
|
11
|
+
# scratch files
|
|
12
|
+
scratch/
|
|
13
|
+
|
|
14
|
+
# Byte-compiled / optimized / DLL files
|
|
15
|
+
__pycache__/
|
|
16
|
+
*.py[cod]
|
|
17
|
+
*$py.class
|
|
18
|
+
|
|
19
|
+
# C extensions
|
|
20
|
+
*.so
|
|
21
|
+
|
|
22
|
+
# Distribution / packaging
|
|
23
|
+
.Python
|
|
24
|
+
build/
|
|
25
|
+
develop-eggs/
|
|
26
|
+
dist/
|
|
27
|
+
eggs/
|
|
28
|
+
.eggs/
|
|
29
|
+
sdist/
|
|
30
|
+
wheels/
|
|
31
|
+
share/python-wheels/
|
|
32
|
+
*.egg-info/
|
|
33
|
+
.installed.cfg
|
|
34
|
+
*.egg
|
|
35
|
+
MANIFEST
|
|
36
|
+
|
|
37
|
+
# PyInstaller
|
|
38
|
+
# Usually these files are written by a python script from a template
|
|
39
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
40
|
+
*.manifest
|
|
41
|
+
*.spec
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
# Unit test / coverage reports
|
|
45
|
+
htmlcov/
|
|
46
|
+
.tox/
|
|
47
|
+
.nox/
|
|
48
|
+
.coverage
|
|
49
|
+
.coverage.*
|
|
50
|
+
.cache
|
|
51
|
+
nosetests.xml
|
|
52
|
+
coverage.xml
|
|
53
|
+
*.cover
|
|
54
|
+
*.py,cover
|
|
55
|
+
.hypothesis/
|
|
56
|
+
.pytest_cache/
|
|
57
|
+
|
|
58
|
+
# Django stuff:
|
|
59
|
+
*.log
|
|
60
|
+
local_settings.py
|
|
61
|
+
db.sqlite3
|
|
62
|
+
db.sqlite3-journal
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
# Sphinx documentation
|
|
66
|
+
|
|
67
|
+
!docs/_build/html
|
|
68
|
+
!docs/_build/markdown
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
# IPython
|
|
73
|
+
profile_default/
|
|
74
|
+
ipython_config.py
|
|
75
|
+
|
|
76
|
+
# Environments
|
|
77
|
+
.env
|
|
78
|
+
.venv
|
|
79
|
+
env/
|
|
80
|
+
venv/
|
|
81
|
+
ENV/
|
|
82
|
+
env.bak/
|
|
83
|
+
venv.bak/
|
|
84
|
+
/docs/_build/doctrees/
|
|
85
|
+
|
|
86
|
+
# VisualStudioCode
|
|
87
|
+
.vscode
|
|
88
|
+
.history
|
|
89
|
+
|
|
90
|
+
# Pycharm
|
|
91
|
+
/.idea
|
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- Fix `Connection._register_handlers` reenabling already manually enabled domains @S-Tarr
|
|
13
|
+
- Fix flakey behavior in `api-reponses-tutorial-2` tutorial @S-Tarr
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- Updated CDP models @nathanfallet
|
|
20
|
+
|
|
21
|
+
### Removed
|
|
22
|
+
|
|
23
|
+
## [0.15.3] - 2026-03-11
|
|
24
|
+
|
|
25
|
+
### Fixed
|
|
26
|
+
|
|
27
|
+
- Fix crash in `browser.cookies.get_all()` on Chrome 146 when the `sameParty` field is missing in the cookie JSON returned by CDP.
|
|
28
|
+
- Fix `clear_input()` and `clear_input_by_deleting()` silently failing on React controlled inputs due to `_valueTracker` mechanism; also fix infinite loop in `clear_input_by_deleting()` on some VM environments caused by `VK_DELETE` being treated as backward-delete. @nathanfallet
|
|
29
|
+
|
|
30
|
+
### Changed
|
|
31
|
+
|
|
32
|
+
- Docs: `core` modules included in documentation reference section. Slight modifications were done, mostly to remove warnings. @Kajmany
|
|
33
|
+
|
|
34
|
+
## [0.15.2] - 2025-11-29
|
|
35
|
+
|
|
36
|
+
### Fixed
|
|
37
|
+
|
|
38
|
+
- Fix race condition in `Tab.query_selector` and `Tab.query_selector_all` on stale document. @Avejack
|
|
39
|
+
|
|
40
|
+
## [0.15.1] - 2025-11-18
|
|
41
|
+
|
|
42
|
+
### Fixed
|
|
43
|
+
|
|
44
|
+
- Fix `NameError` in `Tab.query_selector` and `Tab.query_selector_all` due to type-checking import of `Element`. @Avejack
|
|
45
|
+
|
|
46
|
+
## [0.15.0] - 2025-11-04
|
|
47
|
+
|
|
48
|
+
### Fixed
|
|
49
|
+
|
|
50
|
+
- Fix `browser.stopped` to detect when the browser was closed by the user. @puc9
|
|
51
|
+
- Fix typo in `Browser._handle_target_update` that prevented target_info updates @puc9
|
|
52
|
+
- Fix [#128](https://github.com/cdpdriver/zendriver/issues/218): TimeoutError caused by Tab.xpath @ionutcatana
|
|
53
|
+
- Fix WebRTC IP Leaks @ethcipher
|
|
54
|
+
|
|
55
|
+
### Added
|
|
56
|
+
|
|
57
|
+
- Add `disable_webrtc` and `disable_webgl` args to `Config` class @ethcipher
|
|
58
|
+
|
|
59
|
+
### Changed
|
|
60
|
+
|
|
61
|
+
- Fix `.dockerignore` @tomokinakamaru
|
|
62
|
+
|
|
63
|
+
## [0.14.2] - 2025-09-09
|
|
64
|
+
|
|
65
|
+
### Fixed
|
|
66
|
+
|
|
67
|
+
- Fix `evaluate` to return the correct value instead of None for falsy values @thromer
|
|
68
|
+
|
|
69
|
+
## [0.14.1] - 2025-09-07
|
|
70
|
+
|
|
71
|
+
### Fixed
|
|
72
|
+
|
|
73
|
+
- Fix calls to `evaluate` that return JSON: only set `serialization_options` when `return_by_value=False` @thromer
|
|
74
|
+
- Fix [#184](https://github.com/cdpdriver/zendriver/issues/184): `download_path` error in `DownloadExpectation` @MadsHangaard
|
|
75
|
+
|
|
76
|
+
## [0.14.0] - 2025-08-28
|
|
77
|
+
|
|
78
|
+
### Fixed
|
|
79
|
+
|
|
80
|
+
- Add nodriver evaluate serialization options for improved JavaScript evaluation @dbrun3
|
|
81
|
+
|
|
82
|
+
### Added
|
|
83
|
+
|
|
84
|
+
- Allow reset expect and intercept @nathanfallet
|
|
85
|
+
|
|
86
|
+
## [0.13.1] - 2025-07-27
|
|
87
|
+
|
|
88
|
+
### Fixed
|
|
89
|
+
|
|
90
|
+
- Remove unnecessary usage of `typing_extensions` (fixes `No module named 'typing_extensions'` error) @stephanlensky
|
|
91
|
+
- Fix verify_cf() @H1steria
|
|
92
|
+
- Fix relative coordinates of flash_point() @H1steria
|
|
93
|
+
|
|
94
|
+
### Added
|
|
95
|
+
|
|
96
|
+
- Add flash_point() to Tab.mouse_click() @H1steria
|
|
97
|
+
|
|
98
|
+
### Changed
|
|
99
|
+
|
|
100
|
+
- Remove Connection `__getattr__` and replace it with declared `@property` @nathanfallet
|
|
101
|
+
- Deprecate Element `__getattr__` and add `get(name: str)` method @nathanfallet
|
|
102
|
+
|
|
103
|
+
## [0.13.0] - 2025-07-24
|
|
104
|
+
|
|
105
|
+
### Fixed
|
|
106
|
+
|
|
107
|
+
- Gracefully close the browser process on exit @nathanfallet
|
|
108
|
+
|
|
109
|
+
### Added
|
|
110
|
+
|
|
111
|
+
- Add support for Brave browser @H1steria
|
|
112
|
+
|
|
113
|
+
## [0.12.1] - 2025-07-17
|
|
114
|
+
|
|
115
|
+
### Fixed
|
|
116
|
+
|
|
117
|
+
- Remove usage of StrEnum to fix compatibility with Python 3.10 @stephanlensky
|
|
118
|
+
|
|
119
|
+
## [0.12.0] - 2025-07-17
|
|
120
|
+
|
|
121
|
+
### Added
|
|
122
|
+
|
|
123
|
+
- Added `Tab.intercept` @nathanfallet
|
|
124
|
+
|
|
125
|
+
## [0.11.0] - 2025-07-16
|
|
126
|
+
|
|
127
|
+
### Added
|
|
128
|
+
|
|
129
|
+
- Complete rewrite of keyboard input system with new `KeyEvents` class in `zendriver.core.keys` @hvgupta
|
|
130
|
+
- Added support for modifiers (Ctrl, Alt, Shift, Meta)
|
|
131
|
+
- Added support for special keys including arrows, escape, delete and backspace
|
|
132
|
+
- Added `KeyEvents.from_text()` class method for converting plain text to cdp events
|
|
133
|
+
- Added `KeyEvents.from_mixed_input()` class method for handling mixed sequences of text, special keys to cdp events
|
|
134
|
+
- Proper Handling of shift variants of keys
|
|
135
|
+
- Comprehensive key event types: `CHAR`, `KEY_DOWN`, `KEY_UP`
|
|
136
|
+
- Added key event type (`DOWN_AND_UP`) as a combination of `KEY_DOWN` and `KEY_UP`
|
|
137
|
+
|
|
138
|
+
### Changed
|
|
139
|
+
|
|
140
|
+
- `Element.send_keys()` now uses the new `KeyEvents` system (it is still backwards compatible with passing a string) @hvgupta
|
|
141
|
+
- Key event processing now properly handles modifier key sequences @hvgupta
|
|
142
|
+
- Update CDP schemas @nathanfallet
|
|
143
|
+
|
|
144
|
+
## [0.10.2] - 2025-07-06
|
|
145
|
+
|
|
146
|
+
### Fixed
|
|
147
|
+
|
|
148
|
+
- Refactor to asynchronous handlers to avoid blocking the listening loop @nathanfallet
|
|
149
|
+
|
|
150
|
+
## [0.10.1] - 2025-07-06
|
|
151
|
+
|
|
152
|
+
### Fixed
|
|
153
|
+
|
|
154
|
+
- Added `Tab.flash_point` from nodriver @nathanfallet
|
|
155
|
+
- Ensured loading is finished in expect @nathanfallet
|
|
156
|
+
|
|
157
|
+
## [0.10.0] - 2025-07-05
|
|
158
|
+
|
|
159
|
+
### Fixed
|
|
160
|
+
|
|
161
|
+
- Refactor element waiting loops in `find_*` and `select*` methods. @H1steria
|
|
162
|
+
- Improve `query_selector` error handling to consistently return `None` when a node is not found. @H1steria
|
|
163
|
+
- Add user_agent option to allow bypassing cloudflare javascript challenge in headless mode. @H1steria
|
|
164
|
+
- Fixed `lang` parameter never being set in `Browser.start` @nathanfallet
|
|
165
|
+
|
|
166
|
+
### Added
|
|
167
|
+
|
|
168
|
+
- Added `mouse_move` and `mouse_click` methods from nodriver. @H1steria
|
|
169
|
+
|
|
170
|
+
## [0.9.0] - 2025-07-01
|
|
171
|
+
|
|
172
|
+
### Added
|
|
173
|
+
|
|
174
|
+
- Added `speed` in `Tab.scroll_down` and `Tab.scroll_up` methods to control the scroll speed @nathanfallet
|
|
175
|
+
- Allow to wait for promise in `Element.apply` method @nathanfallet
|
|
176
|
+
- Added `Element.clear_input_by_deleting` to handle inputs with custom delete behavior @nathanfallet
|
|
177
|
+
- Added `Tab.xpath` from nodriver @nathanfallet
|
|
178
|
+
|
|
179
|
+
## [0.8.1] - 2025-06-07
|
|
180
|
+
|
|
181
|
+
### Fixed
|
|
182
|
+
|
|
183
|
+
- Add an optional `special_characters` flag to `Element.send_keys` to support sending special characters (e.g. emojis) @nathanfallet
|
|
184
|
+
|
|
185
|
+
## [0.8.0] - 2025-06-01
|
|
186
|
+
|
|
187
|
+
### Fixed
|
|
188
|
+
|
|
189
|
+
- Fixed tests so that they can run on Windows (and still run on Linux like before) @nathanfallet
|
|
190
|
+
- Remove usage of asyncio subprocess for better compatibility on Windows @nathanfallet
|
|
191
|
+
- Added a missing Chrome Canary path for Windows @nathanfallet
|
|
192
|
+
- Added a flag to re-enable `--load-extension` (disabled by default in Chrome 136+) @nathanfallet
|
|
193
|
+
|
|
194
|
+
## [0.7.1] - 2025-05-08
|
|
195
|
+
|
|
196
|
+
### Changed
|
|
197
|
+
|
|
198
|
+
- Updated CDP models @jsuarezl
|
|
199
|
+
|
|
200
|
+
## [0.7.0] - 2025-04-28
|
|
201
|
+
|
|
202
|
+
### Added
|
|
203
|
+
|
|
204
|
+
- Added `Tab.screenshot_b64` and `Element.screenshot_b64` methods to return screenshot as base64 string @falmar
|
|
205
|
+
- Added `Tab.print_to_pdf` to print the current page to a PDF file @stephanlensky
|
|
206
|
+
|
|
207
|
+
## [0.6.1] - 2025-04-25
|
|
208
|
+
|
|
209
|
+
### Fixed
|
|
210
|
+
|
|
211
|
+
- Fix race condition in `Browser.get` and `Tab.close` which could cause exceptions, especially when running multiple browsers in parallel @stephanlensky
|
|
212
|
+
|
|
213
|
+
## [0.6.0] - 2025-04-20
|
|
214
|
+
|
|
215
|
+
### Fixed
|
|
216
|
+
|
|
217
|
+
- `Browser.get` and `Tab.close` will now wait for their appropiate target events before returning @ccev
|
|
218
|
+
|
|
219
|
+
### Added
|
|
220
|
+
|
|
221
|
+
- Added `Tab.save_snapshot` to export the current page to MHTML format.
|
|
222
|
+
|
|
223
|
+
## [0.5.2] - 2025-04-09
|
|
224
|
+
|
|
225
|
+
### Fixed
|
|
226
|
+
|
|
227
|
+
- Fixed type annotation of `Element.children` @stephanlensky
|
|
228
|
+
|
|
229
|
+
## [0.5.1] - 2025-02-16
|
|
230
|
+
|
|
231
|
+
### Changed
|
|
232
|
+
|
|
233
|
+
- Deprecated `zendriver.loop()` function. You should instead use `asyncio` functions directly, for example:
|
|
234
|
+
|
|
235
|
+
```python
|
|
236
|
+
asyncio.run(your_main_method())
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
## [0.5.0] - 2025-02-16
|
|
240
|
+
|
|
241
|
+
### Added
|
|
242
|
+
|
|
243
|
+
- Add `tab.expect_download` methods to wait for download file @3mora2
|
|
244
|
+
|
|
245
|
+
## [0.4.3] - 2025-02-11
|
|
246
|
+
|
|
247
|
+
### Added
|
|
248
|
+
|
|
249
|
+
- Add logs for Chrome process output on connection failure @stephanlensky
|
|
250
|
+
|
|
251
|
+
### Changed
|
|
252
|
+
|
|
253
|
+
- Default and launch changed to use `about:blank` (faster start and less bandwidth) @raycardillo
|
|
254
|
+
|
|
255
|
+
## [0.4.2] - 2025-02-11
|
|
256
|
+
|
|
257
|
+
### Fixed
|
|
258
|
+
|
|
259
|
+
- Multiple Browsers can be created without one affecting the other @raycardillo
|
|
260
|
+
|
|
261
|
+
## [0.4.1] - 2025-02-09
|
|
262
|
+
|
|
263
|
+
### Fixed
|
|
264
|
+
|
|
265
|
+
- Ignore irrelevant `DOM.disable` errors @raycardillo
|
|
266
|
+
- Test scripts improved for running on macOS @raycardillo
|
|
267
|
+
|
|
268
|
+
## [0.4.0] - 2025-02-06
|
|
269
|
+
|
|
270
|
+
### Added
|
|
271
|
+
|
|
272
|
+
- Add `tab.expect_request` and `tab.expect_response` methods to wait for a specific request or response @3mora2
|
|
273
|
+
- Add `tab.wait_for_ready_state` method for to wait for page to load @3mora2
|
|
274
|
+
- Add `tab.remove_handlers` method for removing handlers @khamaileon
|
|
275
|
+
- Clean up temporary profiles when `Browser.stop()` is called @barrycarey
|
|
276
|
+
|
|
277
|
+
## [0.3.1] - 2025-01-28
|
|
278
|
+
|
|
279
|
+
### Fixed
|
|
280
|
+
|
|
281
|
+
- Fixed bug in `find`/`find_element_by_text` which caused `ProtocolException` when no results were found @stephanlensky
|
|
282
|
+
|
|
283
|
+
## [0.3.0] - 2025-01-25
|
|
284
|
+
|
|
285
|
+
### Fixed
|
|
286
|
+
|
|
287
|
+
- Added `Tab.set_user_agent()` function for programmatically configuring the user-agent, language, and platform @stephanlensky
|
|
288
|
+
- Improved a few type annotations (`Connection.send()` function now returns correctly typed values based on the provided `cdp_obj`) @stephanlensky
|
|
289
|
+
|
|
290
|
+
## [0.2.3] - 2024-12-14
|
|
291
|
+
|
|
292
|
+
### Fixed
|
|
293
|
+
|
|
294
|
+
- Fixed mypy linting errors (attempt 2) @stephanlensky
|
|
295
|
+
|
|
296
|
+
### Added
|
|
297
|
+
|
|
298
|
+
- Handle browser process shutdown on 'Failed to connect to browser' @desoul99
|
|
299
|
+
- Added configurable browser connection timeout and tries @desoul99
|
|
300
|
+
|
|
301
|
+
## [0.2.2] - 2024-11-23
|
|
302
|
+
|
|
303
|
+
### Fixed
|
|
304
|
+
|
|
305
|
+
- Fix `AttributeError: 'tuple' object has no attribute 'value'` error in `connection.py` when using headless browser, @slimshreydy
|
|
306
|
+
|
|
307
|
+
## [0.2.1] - 2024-11-23
|
|
308
|
+
|
|
309
|
+
### Added
|
|
310
|
+
|
|
311
|
+
- Add automated testing framework! @stephanlensky
|
|
312
|
+
- For now, just a few tests are written, including one to test browserscan.com bot detection
|
|
313
|
+
- In the future, we can expand this test suite further (see [Zendriver#18](https://github.com/stephanlensky/zendriver/issues/18))
|
|
314
|
+
- Add return type annotation to `Tab.get_content()` @stephanlensky
|
|
315
|
+
|
|
316
|
+
### Changed
|
|
317
|
+
|
|
318
|
+
- Upgraded `websockets` to latest version (`>=14.0`) @yoori @stephanlensky
|
|
319
|
+
|
|
320
|
+
## [0.2.0] - 2024-11-17
|
|
321
|
+
|
|
322
|
+
### Changed
|
|
323
|
+
|
|
324
|
+
- Updated CDP models @stephanlensky
|
|
325
|
+
|
|
326
|
+
## [0.1.5] - 2024-11-17
|
|
327
|
+
|
|
328
|
+
### Fixed
|
|
329
|
+
|
|
330
|
+
- Reverted non-functional fixes for mypy linting errors (oops) @stephanlensky
|
|
331
|
+
|
|
332
|
+
## [0.1.4] - 2024-11-17
|
|
333
|
+
|
|
334
|
+
### Fixed
|
|
335
|
+
|
|
336
|
+
- Fixed a large number of mypy linting errors (should not result in any functional change) @stephanlensky
|
|
337
|
+
|
|
338
|
+
### Added
|
|
339
|
+
|
|
340
|
+
- Added `zendriver.__version__` attribute to get current package version at runtime @stephanlensky
|
|
341
|
+
|
|
342
|
+
## [0.1.3] - 2024-11-12
|
|
343
|
+
|
|
344
|
+
### Added
|
|
345
|
+
|
|
346
|
+
- Added support for `DOM.scrollableFlagUpdated` experimental CDP event. @michaellee94
|
|
347
|
+
|
|
348
|
+
## [0.1.2] - 2024-11-11
|
|
349
|
+
|
|
350
|
+
### Fixed
|
|
351
|
+
|
|
352
|
+
- Pinned requirement `websockets<14`, fixing the `AttributeError: 'NoneType' object has no attribute 'closed'` crash which occurs on the latest version of `websockets`. @stephanlensky
|
|
353
|
+
- Fixed incorrect `browser.close()` method in examples and documentation -- the correct method is `browser.stop()`. @stephanlensky
|
|
354
|
+
- Fixed `atexit` handler to correctly handle async `browser.stop()` method. @stephanlensky
|
|
355
|
+
|
|
356
|
+
## [0.1.1] - 2024-10-29
|
|
357
|
+
|
|
358
|
+
### Added
|
|
359
|
+
|
|
360
|
+
- Support for Python 3.10 and Python 3.11. All versions >=3.10 are now supported. @stephanlensky
|
|
361
|
+
|
|
362
|
+
## [0.1.0] - 2024-10-20
|
|
363
|
+
|
|
364
|
+
Initial version, forked from [ultrafunkamsterdam/nodriver@`1bb6003`](https://github.com/ultrafunkamsterdam/nodriver/commit/1bb6003c7f0db4d3ec05fdf3fc8c8e0804260103) with a variety of improvements.
|
|
365
|
+
|
|
366
|
+
### Fixed
|
|
367
|
+
|
|
368
|
+
- `Browser.set_all` cookies function now correctly uses provided cookies @ilkecan
|
|
369
|
+
- "successfully removed temp profile" message printed on exit is now only shown only when a profile was actually removed. Message is now logged at debug level instead of printed. @mreiden @stephanlensky
|
|
370
|
+
- Fix crash on starting browser in headless mode @ilkecan
|
|
371
|
+
- Fix `Browser.stop()` method to give the browser instance time to shut down before force killing @stephanlensky
|
|
372
|
+
- Many `ruff` lint issues @stephanlensky
|
|
373
|
+
|
|
374
|
+
### Added
|
|
375
|
+
|
|
376
|
+
- Support for linting with `ruff` and `mypy`. All `ruff` lints are fixed in the initial release, but many `mypy` issues remain to be fixed at a later date. @stephanlensky
|
|
377
|
+
- `py.typed` marker so importing as a library in other packages no longer causes `mypy` errors. @stephanlensky
|
|
378
|
+
|
|
379
|
+
### Changed
|
|
380
|
+
|
|
381
|
+
- Project is now built with [`uv`](https://github.com/astral-sh/uv). Automatically install dependencies to a venv with `uv sync`, run commands from the venv with `uv run`, and build the project with `uv build`. See the official [`uv` docs](https://docs.astral.sh/uv/) for more information. @stephanlensky
|
|
382
|
+
- Docs migrated from sphinx to [mkdocs-material](https://squidfunk.github.io/mkdocs-material/). @stephanlensky
|
|
383
|
+
- `Browser.stop()` is now async (so it must be `await`ed) @stephanlensky
|
|
384
|
+
|
|
385
|
+
### Removed
|
|
386
|
+
|
|
387
|
+
- Twitter account creation example @stephanlensky
|