ysbrowser-sdk 0.11.0__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.
Files changed (240) hide show
  1. ysbrowser_sdk-0.11.0/PKG-INFO +63 -0
  2. ysbrowser_sdk-0.11.0/README.md +41 -0
  3. ysbrowser_sdk-0.11.0/docs/README.html +109 -0
  4. ysbrowser_sdk-0.11.0/docs/README.md +67 -0
  5. ysbrowser_sdk-0.11.0/docs/THIRD_PARTY_NOTICES.html +7 -0
  6. ysbrowser_sdk-0.11.0/docs/THIRD_PARTY_NOTICES.md +5 -0
  7. ysbrowser_sdk-0.11.0/docs/api-reference.html +132 -0
  8. ysbrowser_sdk-0.11.0/docs/api-reference.md +40 -0
  9. ysbrowser_sdk-0.11.0/docs/assets/app.js +46 -0
  10. ysbrowser_sdk-0.11.0/docs/assets/search-index.js +1 -0
  11. ysbrowser_sdk-0.11.0/docs/assets/theme.css +12 -0
  12. ysbrowser_sdk-0.11.0/docs/browser-context.html +452 -0
  13. ysbrowser_sdk-0.11.0/docs/browser-context.md +194 -0
  14. ysbrowser_sdk-0.11.0/docs/context-options.html +285 -0
  15. ysbrowser_sdk-0.11.0/docs/context-options.md +154 -0
  16. ysbrowser_sdk-0.11.0/docs/diagnostics-errors.html +484 -0
  17. ysbrowser_sdk-0.11.0/docs/diagnostics-errors.md +186 -0
  18. ysbrowser_sdk-0.11.0/docs/drag-element.html +296 -0
  19. ysbrowser_sdk-0.11.0/docs/drag-element.md +163 -0
  20. ysbrowser_sdk-0.11.0/docs/examples/README.html +51 -0
  21. ysbrowser_sdk-0.11.0/docs/examples/README.md +23 -0
  22. ysbrowser_sdk-0.11.0/docs/examples/async_basic.py +27 -0
  23. ysbrowser_sdk-0.11.0/docs/examples/drag_element.py +53 -0
  24. ysbrowser_sdk-0.11.0/docs/examples/mouse_between.py +43 -0
  25. ysbrowser_sdk-0.11.0/docs/examples/offline_trajectory.py +23 -0
  26. ysbrowser_sdk-0.11.0/docs/examples/sync_basic.py +23 -0
  27. ysbrowser_sdk-0.11.0/docs/fingerprint.html +187 -0
  28. ysbrowser_sdk-0.11.0/docs/fingerprint.md +111 -0
  29. ysbrowser_sdk-0.11.0/docs/installation.html +372 -0
  30. ysbrowser_sdk-0.11.0/docs/installation.md +320 -0
  31. ysbrowser_sdk-0.11.0/docs/licenses/Patchright-LICENSE.txt +202 -0
  32. ysbrowser_sdk-0.11.0/docs/mouse-trajectory.html +6 -0
  33. ysbrowser_sdk-0.11.0/docs/mouse-trajectory.md +3 -0
  34. ysbrowser_sdk-0.11.0/docs/mouse.html +419 -0
  35. ysbrowser_sdk-0.11.0/docs/mouse.md +298 -0
  36. ysbrowser_sdk-0.11.0/docs/native-reference/APIRequest.html +191 -0
  37. ysbrowser_sdk-0.11.0/docs/native-reference/APIRequest.md +131 -0
  38. ysbrowser_sdk-0.11.0/docs/native-reference/APIRequestContext.html +1566 -0
  39. ysbrowser_sdk-0.11.0/docs/native-reference/APIRequestContext.md +973 -0
  40. ysbrowser_sdk-0.11.0/docs/native-reference/APIResponse.html +206 -0
  41. ysbrowser_sdk-0.11.0/docs/native-reference/APIResponse.md +372 -0
  42. ysbrowser_sdk-0.11.0/docs/native-reference/APIResponseAssertions.html +78 -0
  43. ysbrowser_sdk-0.11.0/docs/native-reference/APIResponseAssertions.md +134 -0
  44. ysbrowser_sdk-0.11.0/docs/native-reference/Browser.html +1234 -0
  45. ysbrowser_sdk-0.11.0/docs/native-reference/Browser.md +737 -0
  46. ysbrowser_sdk-0.11.0/docs/native-reference/BrowserContext.html +2157 -0
  47. ysbrowser_sdk-0.11.0/docs/native-reference/BrowserContext.md +2053 -0
  48. ysbrowser_sdk-0.11.0/docs/native-reference/BrowserType.html +1103 -0
  49. ysbrowser_sdk-0.11.0/docs/native-reference/BrowserType.md +533 -0
  50. ysbrowser_sdk-0.11.0/docs/native-reference/CDPSession.html +129 -0
  51. ysbrowser_sdk-0.11.0/docs/native-reference/CDPSession.md +163 -0
  52. ysbrowser_sdk-0.11.0/docs/native-reference/Clock.html +437 -0
  53. ysbrowser_sdk-0.11.0/docs/native-reference/Clock.md +460 -0
  54. ysbrowser_sdk-0.11.0/docs/native-reference/ConsoleMessage.html +103 -0
  55. ysbrowser_sdk-0.11.0/docs/native-reference/ConsoleMessage.md +183 -0
  56. ysbrowser_sdk-0.11.0/docs/native-reference/Credentials.html +295 -0
  57. ysbrowser_sdk-0.11.0/docs/native-reference/Credentials.md +274 -0
  58. ysbrowser_sdk-0.11.0/docs/native-reference/Debugger.html +158 -0
  59. ysbrowser_sdk-0.11.0/docs/native-reference/Debugger.md +236 -0
  60. ysbrowser_sdk-0.11.0/docs/native-reference/Dialog.html +135 -0
  61. ysbrowser_sdk-0.11.0/docs/native-reference/Dialog.md +196 -0
  62. ysbrowser_sdk-0.11.0/docs/native-reference/Disposable.html +63 -0
  63. ysbrowser_sdk-0.11.0/docs/native-reference/Disposable.md +109 -0
  64. ysbrowser_sdk-0.11.0/docs/native-reference/Download.html +187 -0
  65. ysbrowser_sdk-0.11.0/docs/native-reference/Download.md +288 -0
  66. ysbrowser_sdk-0.11.0/docs/native-reference/ElementHandle.html +2929 -0
  67. ysbrowser_sdk-0.11.0/docs/native-reference/ElementHandle.md +2426 -0
  68. ysbrowser_sdk-0.11.0/docs/native-reference/Expect.html +80 -0
  69. ysbrowser_sdk-0.11.0/docs/native-reference/Expect.md +125 -0
  70. ysbrowser_sdk-0.11.0/docs/native-reference/FileChooser.html +143 -0
  71. ysbrowser_sdk-0.11.0/docs/native-reference/FileChooser.md +175 -0
  72. ysbrowser_sdk-0.11.0/docs/native-reference/FormData.html +26 -0
  73. ysbrowser_sdk-0.11.0/docs/native-reference/FormData.md +39 -0
  74. ysbrowser_sdk-0.11.0/docs/native-reference/Frame.html +5215 -0
  75. ysbrowser_sdk-0.11.0/docs/native-reference/Frame.md +3910 -0
  76. ysbrowser_sdk-0.11.0/docs/native-reference/FrameLocator.html +959 -0
  77. ysbrowser_sdk-0.11.0/docs/native-reference/FrameLocator.md +916 -0
  78. ysbrowser_sdk-0.11.0/docs/native-reference/JSHandle.html +315 -0
  79. ysbrowser_sdk-0.11.0/docs/native-reference/JSHandle.md +387 -0
  80. ysbrowser_sdk-0.11.0/docs/native-reference/Keyboard.html +407 -0
  81. ysbrowser_sdk-0.11.0/docs/native-reference/Keyboard.md +431 -0
  82. ysbrowser_sdk-0.11.0/docs/native-reference/Locator.html +5457 -0
  83. ysbrowser_sdk-0.11.0/docs/native-reference/Locator.md +4823 -0
  84. ysbrowser_sdk-0.11.0/docs/native-reference/LocatorAssertions.html +3677 -0
  85. ysbrowser_sdk-0.11.0/docs/native-reference/LocatorAssertions.md +2918 -0
  86. ysbrowser_sdk-0.11.0/docs/native-reference/Mouse.html +443 -0
  87. ysbrowser_sdk-0.11.0/docs/native-reference/Mouse.md +322 -0
  88. ysbrowser_sdk-0.11.0/docs/native-reference/Page.html +8917 -0
  89. ysbrowser_sdk-0.11.0/docs/native-reference/Page.md +7241 -0
  90. ysbrowser_sdk-0.11.0/docs/native-reference/PageAssertions.html +439 -0
  91. ysbrowser_sdk-0.11.0/docs/native-reference/PageAssertions.md +366 -0
  92. ysbrowser_sdk-0.11.0/docs/native-reference/Playwright.html +149 -0
  93. ysbrowser_sdk-0.11.0/docs/native-reference/Playwright.md +241 -0
  94. ysbrowser_sdk-0.11.0/docs/native-reference/README.html +60 -0
  95. ysbrowser_sdk-0.11.0/docs/native-reference/README.md +65 -0
  96. ysbrowser_sdk-0.11.0/docs/native-reference/Request.html +353 -0
  97. ysbrowser_sdk-0.11.0/docs/native-reference/Request.md +585 -0
  98. ysbrowser_sdk-0.11.0/docs/native-reference/Response.html +368 -0
  99. ysbrowser_sdk-0.11.0/docs/native-reference/Response.md +572 -0
  100. ysbrowser_sdk-0.11.0/docs/native-reference/Route.html +646 -0
  101. ysbrowser_sdk-0.11.0/docs/native-reference/Route.md +556 -0
  102. ysbrowser_sdk-0.11.0/docs/native-reference/Screencast.html +405 -0
  103. ysbrowser_sdk-0.11.0/docs/native-reference/Screencast.md +366 -0
  104. ysbrowser_sdk-0.11.0/docs/native-reference/Selectors.html +237 -0
  105. ysbrowser_sdk-0.11.0/docs/native-reference/Selectors.md +230 -0
  106. ysbrowser_sdk-0.11.0/docs/native-reference/Touchscreen.html +99 -0
  107. ysbrowser_sdk-0.11.0/docs/native-reference/Touchscreen.md +111 -0
  108. ysbrowser_sdk-0.11.0/docs/native-reference/Tracing.html +577 -0
  109. ysbrowser_sdk-0.11.0/docs/native-reference/Tracing.md +521 -0
  110. ysbrowser_sdk-0.11.0/docs/native-reference/Video.html +119 -0
  111. ysbrowser_sdk-0.11.0/docs/native-reference/Video.md +163 -0
  112. ysbrowser_sdk-0.11.0/docs/native-reference/WebError.html +67 -0
  113. ysbrowser_sdk-0.11.0/docs/native-reference/WebError.md +116 -0
  114. ysbrowser_sdk-0.11.0/docs/native-reference/WebMCP.html +169 -0
  115. ysbrowser_sdk-0.11.0/docs/native-reference/WebMCP.md +169 -0
  116. ysbrowser_sdk-0.11.0/docs/native-reference/WebSocket.html +266 -0
  117. ysbrowser_sdk-0.11.0/docs/native-reference/WebSocket.md +296 -0
  118. ysbrowser_sdk-0.11.0/docs/native-reference/WebSocketRoute.html +325 -0
  119. ysbrowser_sdk-0.11.0/docs/native-reference/WebSocketRoute.md +349 -0
  120. ysbrowser_sdk-0.11.0/docs/native-reference/WebStorage.html +221 -0
  121. ysbrowser_sdk-0.11.0/docs/native-reference/WebStorage.md +242 -0
  122. ysbrowser_sdk-0.11.0/docs/native-reference/Worker.html +295 -0
  123. ysbrowser_sdk-0.11.0/docs/native-reference/Worker.md +310 -0
  124. ysbrowser_sdk-0.11.0/docs/native-reference/types.html +1053 -0
  125. ysbrowser_sdk-0.11.0/docs/native-reference/types.md +300 -0
  126. ysbrowser_sdk-0.11.0/docs/page-locator.html +188 -0
  127. ysbrowser_sdk-0.11.0/docs/page-locator.md +172 -0
  128. ysbrowser_sdk-0.11.0/docs/proxy.html +371 -0
  129. ysbrowser_sdk-0.11.0/docs/proxy.md +174 -0
  130. ysbrowser_sdk-0.11.0/docs/reference/BrowserCapabilities.html +220 -0
  131. ysbrowser_sdk-0.11.0/docs/reference/BrowserCapabilities.md +159 -0
  132. ysbrowser_sdk-0.11.0/docs/reference/CompatibilityError.html +82 -0
  133. ysbrowser_sdk-0.11.0/docs/reference/CompatibilityError.md +65 -0
  134. ysbrowser_sdk-0.11.0/docs/reference/ConfigurationError.html +52 -0
  135. ysbrowser_sdk-0.11.0/docs/reference/ConfigurationError.md +60 -0
  136. ysbrowser_sdk-0.11.0/docs/reference/ContextConfig.html +277 -0
  137. ysbrowser_sdk-0.11.0/docs/reference/ContextConfig.md +193 -0
  138. ysbrowser_sdk-0.11.0/docs/reference/ContextOptions.html +421 -0
  139. ysbrowser_sdk-0.11.0/docs/reference/ContextOptions.md +192 -0
  140. ysbrowser_sdk-0.11.0/docs/reference/Direct.html +47 -0
  141. ysbrowser_sdk-0.11.0/docs/reference/Direct.md +65 -0
  142. ysbrowser_sdk-0.11.0/docs/reference/FingerprintLockedError.html +82 -0
  143. ysbrowser_sdk-0.11.0/docs/reference/FingerprintLockedError.md +65 -0
  144. ysbrowser_sdk-0.11.0/docs/reference/FingerprintProfile.html +302 -0
  145. ysbrowser_sdk-0.11.0/docs/reference/FingerprintProfile.md +110 -0
  146. ysbrowser_sdk-0.11.0/docs/reference/MotionExecution.html +93 -0
  147. ysbrowser_sdk-0.11.0/docs/reference/MotionExecution.md +38 -0
  148. ysbrowser_sdk-0.11.0/docs/reference/MotionPlan.html +126 -0
  149. ysbrowser_sdk-0.11.0/docs/reference/MotionPlan.md +44 -0
  150. ysbrowser_sdk-0.11.0/docs/reference/MotionRequest.html +104 -0
  151. ysbrowser_sdk-0.11.0/docs/reference/MotionRequest.md +40 -0
  152. ysbrowser_sdk-0.11.0/docs/reference/MultitaskMouseModel.html +262 -0
  153. ysbrowser_sdk-0.11.0/docs/reference/MultitaskMouseModel.md +170 -0
  154. ysbrowser_sdk-0.11.0/docs/reference/ProxyCheck.html +105 -0
  155. ysbrowser_sdk-0.11.0/docs/reference/ProxyCheck.md +75 -0
  156. ysbrowser_sdk-0.11.0/docs/reference/ProxyCheckError.html +82 -0
  157. ysbrowser_sdk-0.11.0/docs/reference/ProxyCheckError.md +65 -0
  158. ysbrowser_sdk-0.11.0/docs/reference/ProxyConfig.html +105 -0
  159. ysbrowser_sdk-0.11.0/docs/reference/ProxyConfig.md +75 -0
  160. ysbrowser_sdk-0.11.0/docs/reference/ProxyHealthResult.html +208 -0
  161. ysbrowser_sdk-0.11.0/docs/reference/ProxyHealthResult.md +127 -0
  162. ysbrowser_sdk-0.11.0/docs/reference/ProxyStatus.html +274 -0
  163. ysbrowser_sdk-0.11.0/docs/reference/ProxyStatus.md +139 -0
  164. ysbrowser_sdk-0.11.0/docs/reference/SDKError.html +82 -0
  165. ysbrowser_sdk-0.11.0/docs/reference/SDKError.md +65 -0
  166. ysbrowser_sdk-0.11.0/docs/reference/TrajectoryModel.html +256 -0
  167. ysbrowser_sdk-0.11.0/docs/reference/TrajectoryModel.md +179 -0
  168. ysbrowser_sdk-0.11.0/docs/reference/TrajectoryMouse.html +1438 -0
  169. ysbrowser_sdk-0.11.0/docs/reference/TrajectoryMouse.md +965 -0
  170. ysbrowser_sdk-0.11.0/docs/reference/TrajectoryPrediction.html +137 -0
  171. ysbrowser_sdk-0.11.0/docs/reference/TrajectoryPrediction.md +46 -0
  172. ysbrowser_sdk-0.11.0/docs/reference/YSBrowser.html +343 -0
  173. ysbrowser_sdk-0.11.0/docs/reference/YSBrowser.md +352 -0
  174. ysbrowser_sdk-0.11.0/docs/reference/YSContext.html +683 -0
  175. ysbrowser_sdk-0.11.0/docs/reference/YSContext.md +689 -0
  176. ysbrowser_sdk-0.11.0/docs/result-structures.html +261 -0
  177. ysbrowser_sdk-0.11.0/docs/result-structures.md +101 -0
  178. ysbrowser_sdk-0.11.0/docs/storage.html +205 -0
  179. ysbrowser_sdk-0.11.0/docs/storage.md +154 -0
  180. ysbrowser_sdk-0.11.0/docs/troubleshooting.html +47 -0
  181. ysbrowser_sdk-0.11.0/docs/troubleshooting.md +76 -0
  182. ysbrowser_sdk-0.11.0/examples/async_basic.py +27 -0
  183. ysbrowser_sdk-0.11.0/examples/context_options_diagnostics.py +64 -0
  184. ysbrowser_sdk-0.11.0/examples/drag_element.py +53 -0
  185. ysbrowser_sdk-0.11.0/examples/mouse_between.py +43 -0
  186. ysbrowser_sdk-0.11.0/examples/mouse_drag.py +86 -0
  187. ysbrowser_sdk-0.11.0/examples/mouse_trajectory.py +113 -0
  188. ysbrowser_sdk-0.11.0/examples/offline_trajectory.py +23 -0
  189. ysbrowser_sdk-0.11.0/examples/shadow_dom.py +24 -0
  190. ysbrowser_sdk-0.11.0/examples/sync_basic.py +23 -0
  191. ysbrowser_sdk-0.11.0/examples/two_contexts.py +28 -0
  192. ysbrowser_sdk-0.11.0/examples/two_contexts_sync.py +25 -0
  193. ysbrowser_sdk-0.11.0/pyproject.toml +35 -0
  194. ysbrowser_sdk-0.11.0/src/ysbrowser_sdk/__init__.py +20 -0
  195. ysbrowser_sdk-0.11.0/src/ysbrowser_sdk/__main__.py +4 -0
  196. ysbrowser_sdk-0.11.0/src/ysbrowser_sdk/_async_runtime.py +34 -0
  197. ysbrowser_sdk-0.11.0/src/ysbrowser_sdk/_sync_runtime.py +9 -0
  198. ysbrowser_sdk-0.11.0/src/ysbrowser_sdk/async_api.py +14 -0
  199. ysbrowser_sdk-0.11.0/src/ysbrowser_sdk/browser.py +561 -0
  200. ysbrowser_sdk-0.11.0/src/ysbrowser_sdk/cli.py +54 -0
  201. ysbrowser_sdk-0.11.0/src/ysbrowser_sdk/configuration.py +119 -0
  202. ysbrowser_sdk-0.11.0/src/ysbrowser_sdk/diagnostics.py +209 -0
  203. ysbrowser_sdk-0.11.0/src/ysbrowser_sdk/errors.py +37 -0
  204. ysbrowser_sdk-0.11.0/src/ysbrowser_sdk/installer.py +248 -0
  205. ysbrowser_sdk-0.11.0/src/ysbrowser_sdk/models.py +262 -0
  206. ysbrowser_sdk-0.11.0/src/ysbrowser_sdk/motion/__init__.py +5 -0
  207. ysbrowser_sdk-0.11.0/src/ysbrowser_sdk/motion/assets/MODEL_INFO.txt +10 -0
  208. ysbrowser_sdk-0.11.0/src/ysbrowser_sdk/motion/assets/model.json +12654 -0
  209. ysbrowser_sdk-0.11.0/src/ysbrowser_sdk/motion/assets/vector_field.onnx +0 -0
  210. ysbrowser_sdk-0.11.0/src/ysbrowser_sdk/motion/contract.py +56 -0
  211. ysbrowser_sdk-0.11.0/src/ysbrowser_sdk/motion/model.py +122 -0
  212. ysbrowser_sdk-0.11.0/src/ysbrowser_sdk/motion/predictor.py +108 -0
  213. ysbrowser_sdk-0.11.0/src/ysbrowser_sdk/mouse.py +655 -0
  214. ysbrowser_sdk-0.11.0/src/ysbrowser_sdk/options.py +167 -0
  215. ysbrowser_sdk-0.11.0/src/ysbrowser_sdk/py.typed +0 -0
  216. ysbrowser_sdk-0.11.0/src/ysbrowser_sdk/runtime.py +37 -0
  217. ysbrowser_sdk-0.11.0/src/ysbrowser_sdk/sync_api.py +511 -0
  218. ysbrowser_sdk-0.11.0/src/ysbrowser_sdk/sync_diagnostics.py +190 -0
  219. ysbrowser_sdk-0.11.0/tests/gpu_probe.js +57 -0
  220. ysbrowser_sdk-0.11.0/tests/test_cdp_endpoint.py +29 -0
  221. ysbrowser_sdk-0.11.0/tests/test_configuration.py +29 -0
  222. ysbrowser_sdk-0.11.0/tests/test_context_gpu.py +135 -0
  223. ysbrowser_sdk-0.11.0/tests/test_drag.py +108 -0
  224. ysbrowser_sdk-0.11.0/tests/test_drag_integration.py +46 -0
  225. ysbrowser_sdk-0.11.0/tests/test_installer.py +226 -0
  226. ysbrowser_sdk-0.11.0/tests/test_integration.py +174 -0
  227. ysbrowser_sdk-0.11.0/tests/test_lifecycle.py +91 -0
  228. ysbrowser_sdk-0.11.0/tests/test_models.py +77 -0
  229. ysbrowser_sdk-0.11.0/tests/test_motion.py +145 -0
  230. ysbrowser_sdk-0.11.0/tests/test_mouse_integration.py +96 -0
  231. ysbrowser_sdk-0.11.0/tests/test_options.py +53 -0
  232. ysbrowser_sdk-0.11.0/tests/test_options_diagnostics_integration.py +150 -0
  233. ysbrowser_sdk-0.11.0/tests/test_proxy_health.py +207 -0
  234. ysbrowser_sdk-0.11.0/tests/test_proxy_switch.py +359 -0
  235. ysbrowser_sdk-0.11.0/tests/test_runtime_ownership.py +79 -0
  236. ysbrowser_sdk-0.11.0/tests/test_unified_mouse.py +131 -0
  237. ysbrowser_sdk-0.11.0/tests/test_unified_mouse_integration.py +93 -0
  238. ysbrowser_sdk-0.11.0/tools/generate_mouse_sync.py +38 -0
  239. ysbrowser_sdk-0.11.0/tools/generate_sync.py +74 -0
  240. ysbrowser_sdk-0.11.0/tools/mouse_async_template.py +404 -0
@@ -0,0 +1,63 @@
1
+ Metadata-Version: 2.5
2
+ Name: ysbrowser-sdk
3
+ Version: 0.11.0
4
+ Summary: Versioned sync and async Python SDK for YSbrowser context configuration, diagnostics and mouse trajectories
5
+ Classifier: Development Status :: 3 - Alpha
6
+ Classifier: Framework :: AsyncIO
7
+ Classifier: Operating System :: Microsoft :: Windows
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Programming Language :: Python :: 3 :: Only
10
+ Classifier: Typing :: Typed
11
+ Requires-Python: >=3.10
12
+ Requires-Dist: numpy<3,>=1.26
13
+ Requires-Dist: onnxruntime<2,>=1.17
14
+ Requires-Dist: patchright==1.64.2
15
+ Requires-Dist: py7zr<2,>=1.1
16
+ Provides-Extra: dev
17
+ Requires-Dist: build<2,>=1.2; extra == 'dev'
18
+ Requires-Dist: psutil<8,>=6; extra == 'dev'
19
+ Requires-Dist: pytest<10,>=8; extra == 'dev'
20
+ Requires-Dist: twine<8,>=7; extra == 'dev'
21
+ Description-Content-Type: text/markdown
22
+
23
+ # YSbrowser SDK 0.11.0
24
+
25
+ 配套 YSbrowser 定制浏览器的 Windows Python SDK,支持同步/异步调用、Context 配置、代理、状态保存和模型鼠标操作。
26
+
27
+ - [完整使用手册(含代码高亮与全文搜索)](docs/README.html)
28
+ - [drag_element 每个参数和返回结构](docs/drag-element.html)
29
+
30
+ ## 安装
31
+
32
+ ```powershell
33
+ pip install ysbrowser-sdk
34
+ python -m ysbrowser_sdk install
35
+ ```
36
+
37
+ Python >= 3.10;依赖 Patchright 1.64.2、NumPy 和 ONNX Runtime。默认下载内置的 [YSBrowser 6.2](https://github.com/selfshore/YSbrowser/releases/download/6.2/chrome.7z);需要其他版本时,可用 `--url` 显式指定压缩包直链。浏览器默认安装到当前目录的 ./browsers,下载压缩包在解压完成后删除。推理不需要 PyTorch。
38
+
39
+ ## 使用
40
+
41
+ ```python
42
+ from ysbrowser_sdk.sync_api import YSBrowser
43
+
44
+ with YSBrowser(headless=False) as browser:
45
+ context = browser.new_context()
46
+ page = context.new_page()
47
+ page.set_content('<button style="position:absolute;left:700px;top:300px">目标</button>')
48
+ mouse = context.mouse(page)
49
+ result = mouse.move_between(100, 200, 500, 300)
50
+ result = mouse.click_element(page.get_by_role("button", name="目标"))
51
+ print(result.plan.model_id, result.plan.data_source)
52
+ ```
53
+
54
+ 异步代码从 `ysbrowser_sdk.async_api` 导入,在浏览器操作前加 await。
55
+
56
+ - [鼠标完整 API](docs/mouse-trajectory.md)
57
+ - [Context 与代理](docs/proxy.md)
58
+ - [Context 参数及诊断](docs/context-options.md)
59
+ - [代理切换](docs/proxy.md)
60
+ - [A 点到 B 点的可运行示例](examples/mouse_between.py)
61
+ - [拖动示例](examples/mouse_drag.py)
62
+
63
+ 鼠标使用随包条件 Flow Matching Transformer。`move()`、`move_to()` 为绝对坐标,`move_by()` 为相对距离,`move_between()` 指定起终点。省略 duration_s 自动预测运动时长。原生 page.mouse 和 Locator 保持原生调用方式,模型操作通过 context.mouse(page) 使用。
@@ -0,0 +1,41 @@
1
+ # YSbrowser SDK 0.11.0
2
+
3
+ 配套 YSbrowser 定制浏览器的 Windows Python SDK,支持同步/异步调用、Context 配置、代理、状态保存和模型鼠标操作。
4
+
5
+ - [完整使用手册(含代码高亮与全文搜索)](docs/README.html)
6
+ - [drag_element 每个参数和返回结构](docs/drag-element.html)
7
+
8
+ ## 安装
9
+
10
+ ```powershell
11
+ pip install ysbrowser-sdk
12
+ python -m ysbrowser_sdk install
13
+ ```
14
+
15
+ Python >= 3.10;依赖 Patchright 1.64.2、NumPy 和 ONNX Runtime。默认下载内置的 [YSBrowser 6.2](https://github.com/selfshore/YSbrowser/releases/download/6.2/chrome.7z);需要其他版本时,可用 `--url` 显式指定压缩包直链。浏览器默认安装到当前目录的 ./browsers,下载压缩包在解压完成后删除。推理不需要 PyTorch。
16
+
17
+ ## 使用
18
+
19
+ ```python
20
+ from ysbrowser_sdk.sync_api import YSBrowser
21
+
22
+ with YSBrowser(headless=False) as browser:
23
+ context = browser.new_context()
24
+ page = context.new_page()
25
+ page.set_content('<button style="position:absolute;left:700px;top:300px">目标</button>')
26
+ mouse = context.mouse(page)
27
+ result = mouse.move_between(100, 200, 500, 300)
28
+ result = mouse.click_element(page.get_by_role("button", name="目标"))
29
+ print(result.plan.model_id, result.plan.data_source)
30
+ ```
31
+
32
+ 异步代码从 `ysbrowser_sdk.async_api` 导入,在浏览器操作前加 await。
33
+
34
+ - [鼠标完整 API](docs/mouse-trajectory.md)
35
+ - [Context 与代理](docs/proxy.md)
36
+ - [Context 参数及诊断](docs/context-options.md)
37
+ - [代理切换](docs/proxy.md)
38
+ - [A 点到 B 点的可运行示例](examples/mouse_between.py)
39
+ - [拖动示例](examples/mouse_drag.py)
40
+
41
+ 鼠标使用随包条件 Flow Matching Transformer。`move()`、`move_to()` 为绝对坐标,`move_by()` 为相对距离,`move_between()` 指定起终点。省略 duration_s 自动预测运动时长。原生 page.mouse 和 Locator 保持原生调用方式,模型操作通过 context.mouse(page) 使用。
@@ -0,0 +1,109 @@
1
+ <!doctype html><html lang="zh-CN" data-doc-root=""><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>YSbrowser SDK 0.11.0 使用手册 · YSbrowser 文档</title><link rel="stylesheet" href="assets/theme.css"></head><body>
2
+ <a class="skip" href="#doc-main">跳到正文</a><header class="topbar"><button class="icon-button menu-button" id="menu-toggle" aria-label="打开目录">目录</button><a class="brand" href="README.html"><span class="brand-icon">YS</span><span class="brand-label">YSbrowser</span><span class="version">0.11.0</span></a><button class="search-open" id="search-open"><span>搜索文档与 API</span><kbd>Ctrl K</kbd></button><button class="icon-button font-button" id="font-toggle" aria-label="切换大字号">字号 A+</button><button class="icon-button" id="theme-toggle" aria-label="切换明暗主题">明 / 暗</button></header>
3
+ <nav class="sidebar" aria-label="手册目录"><div class="nav-label">使用指南</div><a href="README.html" aria-current="page">开始使用</a><a href="installation.html">安装与快速开始</a><a href="browser-context.html">浏览器与 Context</a><a href="fingerprint.html">指纹与 GPU</a><a href="context-options.html">Context 选项</a><a href="proxy.html">代理与出口检查</a><a href="storage.html">配置与登录状态</a><a href="mouse.html">鼠标操作总览</a><a href="drag-element.html">drag_element 详解</a><a href="result-structures.html">返回结构速查</a><a href="page-locator.html">页面与定位器</a><a href="diagnostics-errors.html">诊断与异常</a><a href="troubleshooting.html">常见问题</a><a href="examples/README.html">可运行示例</a><details><summary>SDK 类型参考</summary><div class="nested"><a href="api-reference.html">全部 SDK 类型</a><a href="reference/BrowserCapabilities.html">BrowserCapabilities</a><a href="reference/CompatibilityError.html">CompatibilityError</a><a href="reference/ConfigurationError.html">ConfigurationError</a><a href="reference/ContextConfig.html">ContextConfig</a><a href="reference/ContextOptions.html">ContextOptions</a><a href="reference/Direct.html">Direct</a><a href="reference/FingerprintLockedError.html">FingerprintLockedError</a><a href="reference/FingerprintProfile.html">FingerprintProfile</a><a href="reference/MotionExecution.html">MotionExecution</a><a href="reference/MotionPlan.html">MotionPlan</a><a href="reference/MotionRequest.html">MotionRequest</a><a href="reference/MultitaskMouseModel.html">MultitaskMouseModel</a><a href="reference/ProxyCheck.html">ProxyCheck</a><a href="reference/ProxyCheckError.html">ProxyCheckError</a><a href="reference/ProxyConfig.html">ProxyConfig</a><a href="reference/ProxyHealthResult.html">ProxyHealthResult</a><a href="reference/ProxyStatus.html">ProxyStatus</a><a href="reference/SDKError.html">SDKError</a><a href="reference/TrajectoryModel.html">TrajectoryModel</a><a href="reference/TrajectoryMouse.html">TrajectoryMouse</a><a href="reference/TrajectoryPrediction.html">TrajectoryPrediction</a><a href="reference/YSBrowser.html">YSBrowser</a><a href="reference/YSContext.html">YSContext</a></div></details><details><summary>Patchright 原生参考</summary><div class="nested"><a href="native-reference/README.html">原生对象目录</a><a href="native-reference/APIRequest.html">APIRequest</a><a href="native-reference/APIRequestContext.html">APIRequestContext</a><a href="native-reference/APIResponse.html">APIResponse</a><a href="native-reference/APIResponseAssertions.html">APIResponseAssertions</a><a href="native-reference/Browser.html">Browser</a><a href="native-reference/BrowserContext.html">BrowserContext</a><a href="native-reference/BrowserType.html">BrowserType</a><a href="native-reference/CDPSession.html">CDPSession</a><a href="native-reference/Clock.html">Clock</a><a href="native-reference/ConsoleMessage.html">ConsoleMessage</a><a href="native-reference/Credentials.html">Credentials</a><a href="native-reference/Debugger.html">Debugger</a><a href="native-reference/Dialog.html">Dialog</a><a href="native-reference/Disposable.html">Disposable</a><a href="native-reference/Download.html">Download</a><a href="native-reference/ElementHandle.html">ElementHandle</a><a href="native-reference/Expect.html">Expect</a><a href="native-reference/FileChooser.html">FileChooser</a><a href="native-reference/FormData.html">FormData</a><a href="native-reference/Frame.html">Frame</a><a href="native-reference/FrameLocator.html">FrameLocator</a><a href="native-reference/JSHandle.html">JSHandle</a><a href="native-reference/Keyboard.html">Keyboard</a><a href="native-reference/Locator.html">Locator</a><a href="native-reference/LocatorAssertions.html">LocatorAssertions</a><a href="native-reference/Mouse.html">Mouse</a><a href="native-reference/Page.html">Page</a><a href="native-reference/PageAssertions.html">PageAssertions</a><a href="native-reference/Playwright.html">Playwright</a><a href="native-reference/Request.html">Request</a><a href="native-reference/Response.html">Response</a><a href="native-reference/Route.html">Route</a><a href="native-reference/Screencast.html">Screencast</a><a href="native-reference/Selectors.html">Selectors</a><a href="native-reference/Touchscreen.html">Touchscreen</a><a href="native-reference/Tracing.html">Tracing</a><a href="native-reference/Video.html">Video</a><a href="native-reference/WebError.html">WebError</a><a href="native-reference/WebMCP.html">WebMCP</a><a href="native-reference/WebSocket.html">WebSocket</a><a href="native-reference/WebSocketRoute.html">WebSocketRoute</a><a href="native-reference/WebStorage.html">WebStorage</a><a href="native-reference/Worker.html">Worker</a><a href="native-reference/types.html">原生输入输出结构</a></div></details><div class="footnote">SDK 0.11.0 · Windows<br>离线可读 · Ctrl K 搜索</div></nav><main id="doc-main"><div class="eyebrow"><span></span>使用指南 / YSBROWSER SDK</div><h1 id="ysbrowser-sdk-0-11-0-使用手册">YSbrowser SDK 0.11.0 使用手册</h1>
4
+ <p>YSbrowser SDK 是配套 YSbrowser 定制浏览器的 Python 自动化库。提供同步与异步接口、独立 Context 指纹与代理、代理出口检查、配置与登录状态保存、轨迹鼠标和诊断文件。页面、定位器、网络拦截等操作使用返回的 Patchright 原生对象。</p>
5
+ <p><strong>目前仅支持 Windows,不支持 macOS 和 Linux。</strong> Python 要求 3.10 或更高版本。SDK 不附带浏览器。先用安装命令下载配套浏览器,随后 <code>YSBrowser()</code> 自动定位;也可手动指定 <code>chrome.exe</code> 的相对路径,普通 Chrome 不提供本 SDK 必需的扩展接口。</p>
6
+ <h2 id="先找到你要做的操作">先找到你要做的操作</h2>
7
+ <ul>
8
+ <li><a href="drag-element.html">拖动元素一定距离:drag_element</a></li>
9
+ <li><a href="mouse.html">从 A 点移动到 B 点、相对移动、点击和拖动</a></li>
10
+ <li><a href="result-structures.html">返回值是对象还是字典,各字段代表什么</a></li>
11
+ <li><a href="troubleshooting.html">没有动作、ImportError、坐标或范围错误</a></li>
12
+ </ul>
13
+ <h2 id="文档目录">文档目录</h2>
14
+ <div class="table-wrap"><table>
15
+ <thead>
16
+ <tr>
17
+ <th>文档</th>
18
+ <th>内容</th>
19
+ </tr>
20
+ </thead>
21
+ <tbody>
22
+ <tr>
23
+ <td><a href="installation.html">安装与快速开始</a></td>
24
+ <td>pip 安装、浏览器自动下载、同步/异步完整程序、命令行</td>
25
+ </tr>
26
+ <tr>
27
+ <td><a href="browser-context.html">浏览器与 Context</a></td>
28
+ <td>启动参数、创建与关闭、命名、能力查询、并发</td>
29
+ </tr>
30
+ <tr>
31
+ <td><a href="fingerprint.html">指纹与 GPU</a></td>
32
+ <td>全部指纹字段、seed、GPU 型号、设置时机</td>
33
+ </tr>
34
+ <tr>
35
+ <td><a href="context-options.html">Context 选项</a></td>
36
+ <td>视口、超时、HTTP 认证、证书、下载、视频、HAR</td>
37
+ </tr>
38
+ <tr>
39
+ <td><a href="proxy.html">代理与出口检查</a></td>
40
+ <td>HTTP/HTTPS/SOCKS5、认证、动态切换、全部状态字段</td>
41
+ </tr>
42
+ <tr>
43
+ <td><a href="storage.html">配置与登录状态</a></td>
44
+ <td>JSON 配置、凭据补齐、Cookie/LocalStorage/IndexedDB</td>
45
+ </tr>
46
+ <tr>
47
+ <td><a href="drag-element.html">drag_element 详解</a></td>
48
+ <td>每个参数、返回值、iframe、示例和常见问题</td>
49
+ </tr>
50
+ <tr>
51
+ <td><a href="result-structures.html">返回结构速查</a></td>
52
+ <td>MotionExecution、MotionPlan、轨迹字典与其他结果</td>
53
+ </tr>
54
+ <tr>
55
+ <td><a href="mouse.html">鼠标轨迹与拖动</a></td>
56
+ <td>坐标移动、点击、指定元素拖动、iframe、模型输入输出</td>
57
+ </tr>
58
+ <tr>
59
+ <td><a href="page-locator.html">页面与定位器</a></td>
60
+ <td>导航、输入、等待、下载、上传、网络、Shadow DOM</td>
61
+ </tr>
62
+ <tr>
63
+ <td><a href="diagnostics-errors.html">诊断与异常</a></td>
64
+ <td>诊断采集、截图、trace、返回结构、异常处理</td>
65
+ </tr>
66
+ <tr>
67
+ <td><a href="api-reference.html">完整 SDK API</a></td>
68
+ <td>所有公开类型、构造签名、方法、属性和默认值</td>
69
+ </tr>
70
+ <tr>
71
+ <td><a href="native-reference/README.html">Patchright 原生 API 参考</a></td>
72
+ <td>原生对象的同步/异步签名、参数、返回值及使用说明</td>
73
+ </tr>
74
+ <tr>
75
+ <td><a href="examples/README.html">可运行示例</a></td>
76
+ <td>同步、异步、拖动、离线生成轨迹</td>
77
+ </tr>
78
+ </tbody>
79
+ </table></div>
80
+ <p>先按<a href="installation.html">安装与快速开始</a>安装包和配套浏览器。</p>
81
+ <h2 id="最小同步程序">最小同步程序</h2>
82
+ <div class="code-block"><div class="code-toolbar"><span>Python</span><button class="copy-code" type="button" aria-label="复制代码">复制代码</button></div><pre class="highlight"><code><span class="kn">from</span><span class="w"> </span><span class="nn">ysbrowser_sdk.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">YSBrowser</span><span class="p">,</span> <span class="n">FingerprintProfile</span>
83
+
84
+ <span class="k">with</span> <span class="n">YSBrowser</span><span class="p">()</span> <span class="k">as</span> <span class="n">browser</span><span class="p">:</span>
85
+ <span class="n">context</span> <span class="o">=</span> <span class="n">browser</span><span class="o">.</span><span class="n">new_context</span><span class="p">(</span>
86
+ <span class="n">name</span><span class="o">=</span><span class="s2">"account-001"</span><span class="p">,</span>
87
+ <span class="n">fingerprint</span><span class="o">=</span><span class="n">FingerprintProfile</span><span class="p">(</span><span class="n">fpseed</span><span class="o">=</span><span class="s2">"account-001"</span><span class="p">),</span>
88
+ <span class="p">)</span>
89
+ <span class="n">page</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="n">new_page</span><span class="p">()</span>
90
+ <span class="n">page</span><span class="o">.</span><span class="n">set_content</span><span class="p">(</span><span class="s1">'&lt;button onclick="this.textContent=</span><span class="se">\'</span><span class="s1">完成</span><span class="se">\'</span><span class="s1">"&gt;开始&lt;/button&gt;'</span><span class="p">)</span>
91
+ <span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"开始"</span><span class="p">)</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
92
+ <span class="nb">print</span><span class="p">(</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">)</span><span class="o">.</span><span class="n">inner_text</span><span class="p">())</span> <span class="c1"># 完成</span>
93
+ </code></pre></div>
94
+ <p><code>with</code> 结束时关闭浏览器及其 Context。业务中需要持久保存的登录状态,应在结束前调用 <code>context.save_storage_state(...)</code>。</p>
95
+ <h2 id="导入与单位约定">导入与单位约定</h2>
96
+ <ul>
97
+ <li>同步入口:<code>from ysbrowser_sdk.sync_api import ...</code>。</li>
98
+ <li>异步入口:<code>from ysbrowser_sdk.async_api import ...</code>。根入口 <code>ysbrowser_sdk</code> 也导出异步接口。</li>
99
+ <li>配置类、模型计算和结果对象在两个入口中的调用方式相同;不需要 <code>await</code>。</li>
100
+ <li>浏览器、Context 和鼠标的异步方法使用 <code>await</code>;工厂 <code>context.mouse(page)</code>、<code>browser.diagnostics()</code>、<code>browser.get_context()</code> 等仍为同步方法,完整 API 表逐项标出。</li>
101
+ <li>鼠标坐标和元素尺寸使用页面视口 CSS 像素;<code>duration_s</code> 使用秒,<code>timeout_ms</code>、<code>hold_ms</code> 等使用毫秒。</li>
102
+ <li>参数中的 <code>None</code> 一般表示不指定;<code>ContextOptions</code> 的 <code>None</code> 表示交给原生接口处理,不等同于 <code>False</code>。</li>
103
+ <li><code>ProxyStatus</code> 等结果可调用 <code>to_dict()</code>;轨迹数据类可使用 <code>dataclasses.asdict()</code>。</li>
104
+ </ul>
105
+ <h2 id="从-patchright-使用方式迁移">从 Patchright 使用方式迁移</h2>
106
+ <p>用 <code>YSBrowser</code> 创建浏览器,用 <code>browser.new_context()</code> 设置指纹和代理,再通过 <code>context.new_page()</code> 取得原生 Page。已有 <code>page.locator(...)</code>、<code>page.goto(...)</code>、<code>page.route(...)</code> 等代码可以继续使用。轨迹鼠标通过 <code>context.mouse(page)</code> 调用;它不会自动替换 <code>page.mouse</code> 或 <code>locator.click()</code>。</p>
107
+ <p>本文面向 SDK 0.11.0、Patchright Python 1.64.2 / driver 1.64.1。其他版本请使用对应版本说明。文中网站域名、账号和环境变量值均为示例,访问实际站点时替换为自己的配置。</p>
108
+ <footer class="page-footer"><span>适用 SDK 0.11.0 · Patchright 1.64.2</span><a href="#doc-main">返回顶部 ↑</a></footer></main><aside class="toc"><div class="toc-title">本页目录</div><a class="level2" href="#先找到你要做的操作">先找到你要做的操作</a><a class="level2" href="#文档目录">文档目录</a><a class="level2" href="#最小同步程序">最小同步程序</a><a class="level2" href="#导入与单位约定">导入与单位约定</a><a class="level2" href="#从-patchright-使用方式迁移">从 Patchright 使用方式迁移</a></aside>
109
+ <dialog id="search-dialog" aria-label="搜索文档"><div class="search-head"><input id="search-input" type="search" placeholder="搜索 API、参数或常见问题" autocomplete="off" aria-label="搜索关键词"><button class="icon-button" id="search-close">关闭</button></div><div class="search-body" id="search-results"></div><div class="search-bottom">本地全文索引,无需联网 · Esc 关闭</div></dialog><script src="assets/search-index.js"></script><script src="assets/app.js"></script></body></html>
@@ -0,0 +1,67 @@
1
+ # YSbrowser SDK 0.11.0 使用手册
2
+
3
+ YSbrowser SDK 是配套 YSbrowser 定制浏览器的 Python 自动化库。提供同步与异步接口、独立 Context 指纹与代理、代理出口检查、配置与登录状态保存、轨迹鼠标和诊断文件。页面、定位器、网络拦截等操作使用返回的 Patchright 原生对象。
4
+
5
+ **目前仅支持 Windows,不支持 macOS 和 Linux。** Python 要求 3.10 或更高版本。SDK 不附带浏览器。先用安装命令下载配套浏览器,随后 `YSBrowser()` 自动定位;也可手动指定 `chrome.exe` 的相对路径,普通 Chrome 不提供本 SDK 必需的扩展接口。
6
+
7
+ ## 先找到你要做的操作
8
+
9
+ - [拖动元素一定距离:drag_element](drag-element.md)
10
+ - [从 A 点移动到 B 点、相对移动、点击和拖动](mouse.md)
11
+ - [返回值是对象还是字典,各字段代表什么](result-structures.md)
12
+ - [没有动作、ImportError、坐标或范围错误](troubleshooting.md)
13
+
14
+ ## 文档目录
15
+
16
+ | 文档 | 内容 |
17
+ | --- | --- |
18
+ | [安装与快速开始](installation.md) | pip 安装、浏览器自动下载、同步/异步完整程序、命令行 |
19
+ | [浏览器与 Context](browser-context.md) | 启动参数、创建与关闭、命名、能力查询、并发 |
20
+ | [指纹与 GPU](fingerprint.md) | 全部指纹字段、seed、GPU 型号、设置时机 |
21
+ | [Context 选项](context-options.md) | 视口、超时、HTTP 认证、证书、下载、视频、HAR |
22
+ | [代理与出口检查](proxy.md) | HTTP/HTTPS/SOCKS5、认证、动态切换、全部状态字段 |
23
+ | [配置与登录状态](storage.md) | JSON 配置、凭据补齐、Cookie/LocalStorage/IndexedDB |
24
+ | [drag_element 详解](drag-element.md) | 每个参数、返回值、iframe、示例和常见问题 |
25
+ | [返回结构速查](result-structures.md) | MotionExecution、MotionPlan、轨迹字典与其他结果 |
26
+ | [鼠标轨迹与拖动](mouse.md) | 坐标移动、点击、指定元素拖动、iframe、模型输入输出 |
27
+ | [页面与定位器](page-locator.md) | 导航、输入、等待、下载、上传、网络、Shadow DOM |
28
+ | [诊断与异常](diagnostics-errors.md) | 诊断采集、截图、trace、返回结构、异常处理 |
29
+ | [完整 SDK API](api-reference.md) | 所有公开类型、构造签名、方法、属性和默认值 |
30
+ | [Patchright 原生 API 参考](native-reference/README.md) | 原生对象的同步/异步签名、参数、返回值及使用说明 |
31
+ | [可运行示例](examples/README.md) | 同步、异步、拖动、离线生成轨迹 |
32
+
33
+ 先按[安装与快速开始](installation.md)安装包和配套浏览器。
34
+
35
+ ## 最小同步程序
36
+
37
+ ```python
38
+ from ysbrowser_sdk.sync_api import YSBrowser, FingerprintProfile
39
+
40
+ with YSBrowser() as browser:
41
+ context = browser.new_context(
42
+ name="account-001",
43
+ fingerprint=FingerprintProfile(fpseed="account-001"),
44
+ )
45
+ page = context.new_page()
46
+ page.set_content('<button onclick="this.textContent=\'完成\'">开始</button>')
47
+ page.get_by_role("button", name="开始").click()
48
+ print(page.get_by_role("button").inner_text()) # 完成
49
+ ```
50
+
51
+ `with` 结束时关闭浏览器及其 Context。业务中需要持久保存的登录状态,应在结束前调用 `context.save_storage_state(...)`。
52
+
53
+ ## 导入与单位约定
54
+
55
+ - 同步入口:`from ysbrowser_sdk.sync_api import ...`。
56
+ - 异步入口:`from ysbrowser_sdk.async_api import ...`。根入口 `ysbrowser_sdk` 也导出异步接口。
57
+ - 配置类、模型计算和结果对象在两个入口中的调用方式相同;不需要 `await`。
58
+ - 浏览器、Context 和鼠标的异步方法使用 `await`;工厂 `context.mouse(page)`、`browser.diagnostics()`、`browser.get_context()` 等仍为同步方法,完整 API 表逐项标出。
59
+ - 鼠标坐标和元素尺寸使用页面视口 CSS 像素;`duration_s` 使用秒,`timeout_ms`、`hold_ms` 等使用毫秒。
60
+ - 参数中的 `None` 一般表示不指定;`ContextOptions` 的 `None` 表示交给原生接口处理,不等同于 `False`。
61
+ - `ProxyStatus` 等结果可调用 `to_dict()`;轨迹数据类可使用 `dataclasses.asdict()`。
62
+
63
+ ## 从 Patchright 使用方式迁移
64
+
65
+ 用 `YSBrowser` 创建浏览器,用 `browser.new_context()` 设置指纹和代理,再通过 `context.new_page()` 取得原生 Page。已有 `page.locator(...)`、`page.goto(...)`、`page.route(...)` 等代码可以继续使用。轨迹鼠标通过 `context.mouse(page)` 调用;它不会自动替换 `page.mouse` 或 `locator.click()`。
66
+
67
+ 本文面向 SDK 0.11.0、Patchright Python 1.64.2 / driver 1.64.1。其他版本请使用对应版本说明。文中网站域名、账号和环境变量值均为示例,访问实际站点时替换为自己的配置。
@@ -0,0 +1,7 @@
1
+ <!doctype html><html lang="zh-CN" data-doc-root=""><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>第三方说明与许可 · YSbrowser 文档</title><link rel="stylesheet" href="assets/theme.css"></head><body>
2
+ <a class="skip" href="#doc-main">跳到正文</a><header class="topbar"><button class="icon-button menu-button" id="menu-toggle" aria-label="打开目录">目录</button><a class="brand" href="README.html"><span class="brand-icon">YS</span><span class="brand-label">YSbrowser</span><span class="version">0.11.0</span></a><button class="search-open" id="search-open"><span>搜索文档与 API</span><kbd>Ctrl K</kbd></button><button class="icon-button font-button" id="font-toggle" aria-label="切换大字号">字号 A+</button><button class="icon-button" id="theme-toggle" aria-label="切换明暗主题">明 / 暗</button></header>
3
+ <nav class="sidebar" aria-label="手册目录"><div class="nav-label">使用指南</div><a href="README.html">开始使用</a><a href="installation.html">安装与快速开始</a><a href="browser-context.html">浏览器与 Context</a><a href="fingerprint.html">指纹与 GPU</a><a href="context-options.html">Context 选项</a><a href="proxy.html">代理与出口检查</a><a href="storage.html">配置与登录状态</a><a href="mouse.html">鼠标操作总览</a><a href="drag-element.html">drag_element 详解</a><a href="result-structures.html">返回结构速查</a><a href="page-locator.html">页面与定位器</a><a href="diagnostics-errors.html">诊断与异常</a><a href="troubleshooting.html">常见问题</a><a href="examples/README.html">可运行示例</a><details><summary>SDK 类型参考</summary><div class="nested"><a href="api-reference.html">全部 SDK 类型</a><a href="reference/BrowserCapabilities.html">BrowserCapabilities</a><a href="reference/CompatibilityError.html">CompatibilityError</a><a href="reference/ConfigurationError.html">ConfigurationError</a><a href="reference/ContextConfig.html">ContextConfig</a><a href="reference/ContextOptions.html">ContextOptions</a><a href="reference/Direct.html">Direct</a><a href="reference/FingerprintLockedError.html">FingerprintLockedError</a><a href="reference/FingerprintProfile.html">FingerprintProfile</a><a href="reference/MotionExecution.html">MotionExecution</a><a href="reference/MotionPlan.html">MotionPlan</a><a href="reference/MotionRequest.html">MotionRequest</a><a href="reference/MultitaskMouseModel.html">MultitaskMouseModel</a><a href="reference/ProxyCheck.html">ProxyCheck</a><a href="reference/ProxyCheckError.html">ProxyCheckError</a><a href="reference/ProxyConfig.html">ProxyConfig</a><a href="reference/ProxyHealthResult.html">ProxyHealthResult</a><a href="reference/ProxyStatus.html">ProxyStatus</a><a href="reference/SDKError.html">SDKError</a><a href="reference/TrajectoryModel.html">TrajectoryModel</a><a href="reference/TrajectoryMouse.html">TrajectoryMouse</a><a href="reference/TrajectoryPrediction.html">TrajectoryPrediction</a><a href="reference/YSBrowser.html">YSBrowser</a><a href="reference/YSContext.html">YSContext</a></div></details><details><summary>Patchright 原生参考</summary><div class="nested"><a href="native-reference/README.html">原生对象目录</a><a href="native-reference/APIRequest.html">APIRequest</a><a href="native-reference/APIRequestContext.html">APIRequestContext</a><a href="native-reference/APIResponse.html">APIResponse</a><a href="native-reference/APIResponseAssertions.html">APIResponseAssertions</a><a href="native-reference/Browser.html">Browser</a><a href="native-reference/BrowserContext.html">BrowserContext</a><a href="native-reference/BrowserType.html">BrowserType</a><a href="native-reference/CDPSession.html">CDPSession</a><a href="native-reference/Clock.html">Clock</a><a href="native-reference/ConsoleMessage.html">ConsoleMessage</a><a href="native-reference/Credentials.html">Credentials</a><a href="native-reference/Debugger.html">Debugger</a><a href="native-reference/Dialog.html">Dialog</a><a href="native-reference/Disposable.html">Disposable</a><a href="native-reference/Download.html">Download</a><a href="native-reference/ElementHandle.html">ElementHandle</a><a href="native-reference/Expect.html">Expect</a><a href="native-reference/FileChooser.html">FileChooser</a><a href="native-reference/FormData.html">FormData</a><a href="native-reference/Frame.html">Frame</a><a href="native-reference/FrameLocator.html">FrameLocator</a><a href="native-reference/JSHandle.html">JSHandle</a><a href="native-reference/Keyboard.html">Keyboard</a><a href="native-reference/Locator.html">Locator</a><a href="native-reference/LocatorAssertions.html">LocatorAssertions</a><a href="native-reference/Mouse.html">Mouse</a><a href="native-reference/Page.html">Page</a><a href="native-reference/PageAssertions.html">PageAssertions</a><a href="native-reference/Playwright.html">Playwright</a><a href="native-reference/Request.html">Request</a><a href="native-reference/Response.html">Response</a><a href="native-reference/Route.html">Route</a><a href="native-reference/Screencast.html">Screencast</a><a href="native-reference/Selectors.html">Selectors</a><a href="native-reference/Touchscreen.html">Touchscreen</a><a href="native-reference/Tracing.html">Tracing</a><a href="native-reference/Video.html">Video</a><a href="native-reference/WebError.html">WebError</a><a href="native-reference/WebMCP.html">WebMCP</a><a href="native-reference/WebSocket.html">WebSocket</a><a href="native-reference/WebSocketRoute.html">WebSocketRoute</a><a href="native-reference/WebStorage.html">WebStorage</a><a href="native-reference/Worker.html">Worker</a><a href="native-reference/types.html">原生输入输出结构</a></div></details><div class="footnote">SDK 0.11.0 · Windows<br>离线可读 · Ctrl K 搜索</div></nav><main id="doc-main"><div class="eyebrow"><span></span>使用指南 / YSBROWSER SDK</div><h1 id="第三方说明与许可">第三方说明与许可</h1>
4
+ <p>原生 API 附录的英文说明、示例和 API 签名来自 Patchright Python 1.64.2 随包文件。Patchright 基于 Microsoft Playwright,相关文件保留 Microsoft Corporation 等原有版权声明,采用 Apache License 2.0。完整许可见 <a href="licenses/Patchright-LICENSE.txt">Patchright LICENSE</a>。中文组织说明和 SDK 使用指南面向 YSbrowser SDK 0.11.0。</p>
5
+ <p>文档附录用于说明接口,不附带浏览器、驱动或依赖实现。使用时仍需安装对应软件包。</p>
6
+ <footer class="page-footer"><span>适用 SDK 0.11.0 · Patchright 1.64.2</span><a href="#doc-main">返回顶部 ↑</a></footer></main><aside class="toc"><div class="toc-title">本页目录</div></aside>
7
+ <dialog id="search-dialog" aria-label="搜索文档"><div class="search-head"><input id="search-input" type="search" placeholder="搜索 API、参数或常见问题" autocomplete="off" aria-label="搜索关键词"><button class="icon-button" id="search-close">关闭</button></div><div class="search-body" id="search-results"></div><div class="search-bottom">本地全文索引,无需联网 · Esc 关闭</div></dialog><script src="assets/search-index.js"></script><script src="assets/app.js"></script></body></html>
@@ -0,0 +1,5 @@
1
+ # 第三方说明与许可
2
+
3
+ 原生 API 附录的英文说明、示例和 API 签名来自 Patchright Python 1.64.2 随包文件。Patchright 基于 Microsoft Playwright,相关文件保留 Microsoft Corporation 等原有版权声明,采用 Apache License 2.0。完整许可见 [Patchright LICENSE](licenses/Patchright-LICENSE.txt)。中文组织说明和 SDK 使用指南面向 YSbrowser SDK 0.11.0。
4
+
5
+ 文档附录用于说明接口,不附带浏览器、驱动或依赖实现。使用时仍需安装对应软件包。
@@ -0,0 +1,132 @@
1
+ <!doctype html><html lang="zh-CN" data-doc-root=""><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>SDK API 参考 · YSbrowser 文档</title><link rel="stylesheet" href="assets/theme.css"></head><body>
2
+ <a class="skip" href="#doc-main">跳到正文</a><header class="topbar"><button class="icon-button menu-button" id="menu-toggle" aria-label="打开目录">目录</button><a class="brand" href="README.html"><span class="brand-icon">YS</span><span class="brand-label">YSbrowser</span><span class="version">0.11.0</span></a><button class="search-open" id="search-open"><span>搜索文档与 API</span><kbd>Ctrl K</kbd></button><button class="icon-button font-button" id="font-toggle" aria-label="切换大字号">字号 A+</button><button class="icon-button" id="theme-toggle" aria-label="切换明暗主题">明 / 暗</button></header>
3
+ <nav class="sidebar" aria-label="手册目录"><div class="nav-label">使用指南</div><a href="README.html">开始使用</a><a href="installation.html">安装与快速开始</a><a href="browser-context.html">浏览器与 Context</a><a href="fingerprint.html">指纹与 GPU</a><a href="context-options.html">Context 选项</a><a href="proxy.html">代理与出口检查</a><a href="storage.html">配置与登录状态</a><a href="mouse.html">鼠标操作总览</a><a href="drag-element.html">drag_element 详解</a><a href="result-structures.html">返回结构速查</a><a href="page-locator.html">页面与定位器</a><a href="diagnostics-errors.html">诊断与异常</a><a href="troubleshooting.html">常见问题</a><a href="examples/README.html">可运行示例</a><details><summary>SDK 类型参考</summary><div class="nested"><a href="api-reference.html" aria-current="page">全部 SDK 类型</a><a href="reference/BrowserCapabilities.html">BrowserCapabilities</a><a href="reference/CompatibilityError.html">CompatibilityError</a><a href="reference/ConfigurationError.html">ConfigurationError</a><a href="reference/ContextConfig.html">ContextConfig</a><a href="reference/ContextOptions.html">ContextOptions</a><a href="reference/Direct.html">Direct</a><a href="reference/FingerprintLockedError.html">FingerprintLockedError</a><a href="reference/FingerprintProfile.html">FingerprintProfile</a><a href="reference/MotionExecution.html">MotionExecution</a><a href="reference/MotionPlan.html">MotionPlan</a><a href="reference/MotionRequest.html">MotionRequest</a><a href="reference/MultitaskMouseModel.html">MultitaskMouseModel</a><a href="reference/ProxyCheck.html">ProxyCheck</a><a href="reference/ProxyCheckError.html">ProxyCheckError</a><a href="reference/ProxyConfig.html">ProxyConfig</a><a href="reference/ProxyHealthResult.html">ProxyHealthResult</a><a href="reference/ProxyStatus.html">ProxyStatus</a><a href="reference/SDKError.html">SDKError</a><a href="reference/TrajectoryModel.html">TrajectoryModel</a><a href="reference/TrajectoryMouse.html">TrajectoryMouse</a><a href="reference/TrajectoryPrediction.html">TrajectoryPrediction</a><a href="reference/YSBrowser.html">YSBrowser</a><a href="reference/YSContext.html">YSContext</a></div></details><details><summary>Patchright 原生参考</summary><div class="nested"><a href="native-reference/README.html">原生对象目录</a><a href="native-reference/APIRequest.html">APIRequest</a><a href="native-reference/APIRequestContext.html">APIRequestContext</a><a href="native-reference/APIResponse.html">APIResponse</a><a href="native-reference/APIResponseAssertions.html">APIResponseAssertions</a><a href="native-reference/Browser.html">Browser</a><a href="native-reference/BrowserContext.html">BrowserContext</a><a href="native-reference/BrowserType.html">BrowserType</a><a href="native-reference/CDPSession.html">CDPSession</a><a href="native-reference/Clock.html">Clock</a><a href="native-reference/ConsoleMessage.html">ConsoleMessage</a><a href="native-reference/Credentials.html">Credentials</a><a href="native-reference/Debugger.html">Debugger</a><a href="native-reference/Dialog.html">Dialog</a><a href="native-reference/Disposable.html">Disposable</a><a href="native-reference/Download.html">Download</a><a href="native-reference/ElementHandle.html">ElementHandle</a><a href="native-reference/Expect.html">Expect</a><a href="native-reference/FileChooser.html">FileChooser</a><a href="native-reference/FormData.html">FormData</a><a href="native-reference/Frame.html">Frame</a><a href="native-reference/FrameLocator.html">FrameLocator</a><a href="native-reference/JSHandle.html">JSHandle</a><a href="native-reference/Keyboard.html">Keyboard</a><a href="native-reference/Locator.html">Locator</a><a href="native-reference/LocatorAssertions.html">LocatorAssertions</a><a href="native-reference/Mouse.html">Mouse</a><a href="native-reference/Page.html">Page</a><a href="native-reference/PageAssertions.html">PageAssertions</a><a href="native-reference/Playwright.html">Playwright</a><a href="native-reference/Request.html">Request</a><a href="native-reference/Response.html">Response</a><a href="native-reference/Route.html">Route</a><a href="native-reference/Screencast.html">Screencast</a><a href="native-reference/Selectors.html">Selectors</a><a href="native-reference/Touchscreen.html">Touchscreen</a><a href="native-reference/Tracing.html">Tracing</a><a href="native-reference/Video.html">Video</a><a href="native-reference/WebError.html">WebError</a><a href="native-reference/WebMCP.html">WebMCP</a><a href="native-reference/WebSocket.html">WebSocket</a><a href="native-reference/WebSocketRoute.html">WebSocketRoute</a><a href="native-reference/WebStorage.html">WebStorage</a><a href="native-reference/Worker.html">Worker</a><a href="native-reference/types.html">原生输入输出结构</a></div></details><div class="footnote">SDK 0.11.0 · Windows<br>离线可读 · Ctrl K 搜索</div></nav><main id="doc-main"><div class="eyebrow"><span></span>使用指南 / YSBROWSER SDK</div><h1 id="sdk-api-参考">SDK API 参考</h1>
4
+ <p>按类型阅读。每个方法包含签名、参数默认值与单位、返回结构、调用片段和注意事项。两个入口语义相同;异步操作标为 await。</p>
5
+ <div class="table-wrap"><table>
6
+ <thead>
7
+ <tr>
8
+ <th>类型</th>
9
+ <th>使用章节</th>
10
+ </tr>
11
+ </thead>
12
+ <tbody>
13
+ <tr>
14
+ <td><a href="reference/YSBrowser.html">YSBrowser</a></td>
15
+ <td><a href="browser-context.html">browser-context</a></td>
16
+ </tr>
17
+ <tr>
18
+ <td><a href="reference/YSContext.html">YSContext</a></td>
19
+ <td><a href="browser-context.html">browser-context</a></td>
20
+ </tr>
21
+ <tr>
22
+ <td><a href="reference/ContextConfig.html">ContextConfig</a></td>
23
+ <td><a href="storage.html">storage</a></td>
24
+ </tr>
25
+ <tr>
26
+ <td><a href="reference/BrowserCapabilities.html">BrowserCapabilities</a></td>
27
+ <td><a href="browser-context.html">browser-context</a></td>
28
+ </tr>
29
+ <tr>
30
+ <td><a href="reference/ProxyHealthResult.html">ProxyHealthResult</a></td>
31
+ <td><a href="proxy.html">proxy</a></td>
32
+ </tr>
33
+ <tr>
34
+ <td><a href="reference/Direct.html">Direct</a></td>
35
+ <td><a href="proxy.html">proxy</a></td>
36
+ </tr>
37
+ <tr>
38
+ <td><a href="reference/FingerprintProfile.html">FingerprintProfile</a></td>
39
+ <td><a href="fingerprint.html">fingerprint</a></td>
40
+ </tr>
41
+ <tr>
42
+ <td><a href="reference/ProxyCheck.html">ProxyCheck</a></td>
43
+ <td><a href="proxy.html">proxy</a></td>
44
+ </tr>
45
+ <tr>
46
+ <td><a href="reference/ProxyConfig.html">ProxyConfig</a></td>
47
+ <td><a href="proxy.html">proxy</a></td>
48
+ </tr>
49
+ <tr>
50
+ <td><a href="reference/ProxyStatus.html">ProxyStatus</a></td>
51
+ <td><a href="proxy.html">proxy</a></td>
52
+ </tr>
53
+ <tr>
54
+ <td><a href="reference/SDKError.html">SDKError</a></td>
55
+ <td><a href="diagnostics-errors.html">diagnostics-errors</a></td>
56
+ </tr>
57
+ <tr>
58
+ <td><a href="reference/ConfigurationError.html">ConfigurationError</a></td>
59
+ <td><a href="diagnostics-errors.html">diagnostics-errors</a></td>
60
+ </tr>
61
+ <tr>
62
+ <td><a href="reference/CompatibilityError.html">CompatibilityError</a></td>
63
+ <td><a href="diagnostics-errors.html">diagnostics-errors</a></td>
64
+ </tr>
65
+ <tr>
66
+ <td><a href="reference/FingerprintLockedError.html">FingerprintLockedError</a></td>
67
+ <td><a href="diagnostics-errors.html">diagnostics-errors</a></td>
68
+ </tr>
69
+ <tr>
70
+ <td><a href="reference/ProxyCheckError.html">ProxyCheckError</a></td>
71
+ <td><a href="diagnostics-errors.html">diagnostics-errors</a></td>
72
+ </tr>
73
+ <tr>
74
+ <td><a href="reference/TrajectoryMouse.html">TrajectoryMouse</a></td>
75
+ <td><a href="mouse.html">mouse</a></td>
76
+ </tr>
77
+ <tr>
78
+ <td><a href="reference/TrajectoryModel.html">TrajectoryModel</a></td>
79
+ <td><a href="mouse.html">mouse</a></td>
80
+ </tr>
81
+ <tr>
82
+ <td><a href="reference/MotionPlan.html">MotionPlan</a></td>
83
+ <td><a href="mouse.html">mouse</a></td>
84
+ </tr>
85
+ <tr>
86
+ <td><a href="reference/MotionRequest.html">MotionRequest</a></td>
87
+ <td><a href="mouse.html">mouse</a></td>
88
+ </tr>
89
+ <tr>
90
+ <td><a href="reference/MotionExecution.html">MotionExecution</a></td>
91
+ <td><a href="mouse.html">mouse</a></td>
92
+ </tr>
93
+ <tr>
94
+ <td><a href="reference/ContextOptions.html">ContextOptions</a></td>
95
+ <td><a href="context-options.html">context-options</a></td>
96
+ </tr>
97
+ <tr>
98
+ <td><a href="reference/MultitaskMouseModel.html">MultitaskMouseModel</a></td>
99
+ <td><a href="mouse.html">mouse</a></td>
100
+ </tr>
101
+ <tr>
102
+ <td><a href="reference/TrajectoryPrediction.html">TrajectoryPrediction</a></td>
103
+ <td><a href="mouse.html">mouse</a></td>
104
+ </tr>
105
+ </tbody>
106
+ </table></div>
107
+ <h2 id="浏览器安装函数">浏览器安装函数</h2>
108
+ <p>从 <code>ysbrowser_sdk.installer</code> 导入,均为同步函数:</p>
109
+ <div class="table-wrap"><table>
110
+ <thead>
111
+ <tr>
112
+ <th>函数</th>
113
+ <th>返回</th>
114
+ <th>用途</th>
115
+ </tr>
116
+ </thead>
117
+ <tbody>
118
+ <tr>
119
+ <td><a href="installation.html#install-browser">install_browser</a></td>
120
+ <td><code>Path</code></td>
121
+ <td>下载、解压或复用配套浏览器</td>
122
+ </tr>
123
+ <tr>
124
+ <td><a href="installation.html#get-browser-path">get_browser_path</a></td>
125
+ <td><code>Path</code></td>
126
+ <td>取得当前安装的浏览器入口</td>
127
+ </tr>
128
+ </tbody>
129
+ </table></div>
130
+ <p>参数、默认值、返回值和示例见<a href="installation.html#python-安装-api">安装指南</a>。</p>
131
+ <footer class="page-footer"><span>适用 SDK 0.11.0 · Patchright 1.64.2</span><a href="#doc-main">返回顶部 ↑</a></footer></main><aside class="toc"><div class="toc-title">本页目录</div><a class="level2" href="#浏览器安装函数">浏览器安装函数</a></aside>
132
+ <dialog id="search-dialog" aria-label="搜索文档"><div class="search-head"><input id="search-input" type="search" placeholder="搜索 API、参数或常见问题" autocomplete="off" aria-label="搜索关键词"><button class="icon-button" id="search-close">关闭</button></div><div class="search-body" id="search-results"></div><div class="search-bottom">本地全文索引,无需联网 · Esc 关闭</div></dialog><script src="assets/search-index.js"></script><script src="assets/app.js"></script></body></html>
@@ -0,0 +1,40 @@
1
+ # SDK API 参考
2
+
3
+ 按类型阅读。每个方法包含签名、参数默认值与单位、返回结构、调用片段和注意事项。两个入口语义相同;异步操作标为 await。
4
+
5
+ | 类型 | 使用章节 |
6
+ | --- | --- |
7
+ | [YSBrowser](reference/YSBrowser.md) | [browser-context](browser-context.md) |
8
+ | [YSContext](reference/YSContext.md) | [browser-context](browser-context.md) |
9
+ | [ContextConfig](reference/ContextConfig.md) | [storage](storage.md) |
10
+ | [BrowserCapabilities](reference/BrowserCapabilities.md) | [browser-context](browser-context.md) |
11
+ | [ProxyHealthResult](reference/ProxyHealthResult.md) | [proxy](proxy.md) |
12
+ | [Direct](reference/Direct.md) | [proxy](proxy.md) |
13
+ | [FingerprintProfile](reference/FingerprintProfile.md) | [fingerprint](fingerprint.md) |
14
+ | [ProxyCheck](reference/ProxyCheck.md) | [proxy](proxy.md) |
15
+ | [ProxyConfig](reference/ProxyConfig.md) | [proxy](proxy.md) |
16
+ | [ProxyStatus](reference/ProxyStatus.md) | [proxy](proxy.md) |
17
+ | [SDKError](reference/SDKError.md) | [diagnostics-errors](diagnostics-errors.md) |
18
+ | [ConfigurationError](reference/ConfigurationError.md) | [diagnostics-errors](diagnostics-errors.md) |
19
+ | [CompatibilityError](reference/CompatibilityError.md) | [diagnostics-errors](diagnostics-errors.md) |
20
+ | [FingerprintLockedError](reference/FingerprintLockedError.md) | [diagnostics-errors](diagnostics-errors.md) |
21
+ | [ProxyCheckError](reference/ProxyCheckError.md) | [diagnostics-errors](diagnostics-errors.md) |
22
+ | [TrajectoryMouse](reference/TrajectoryMouse.md) | [mouse](mouse.md) |
23
+ | [TrajectoryModel](reference/TrajectoryModel.md) | [mouse](mouse.md) |
24
+ | [MotionPlan](reference/MotionPlan.md) | [mouse](mouse.md) |
25
+ | [MotionRequest](reference/MotionRequest.md) | [mouse](mouse.md) |
26
+ | [MotionExecution](reference/MotionExecution.md) | [mouse](mouse.md) |
27
+ | [ContextOptions](reference/ContextOptions.md) | [context-options](context-options.md) |
28
+ | [MultitaskMouseModel](reference/MultitaskMouseModel.md) | [mouse](mouse.md) |
29
+ | [TrajectoryPrediction](reference/TrajectoryPrediction.md) | [mouse](mouse.md) |
30
+
31
+ ## 浏览器安装函数
32
+
33
+ 从 `ysbrowser_sdk.installer` 导入,均为同步函数:
34
+
35
+ | 函数 | 返回 | 用途 |
36
+ | --- | --- | --- |
37
+ | [install_browser](installation.md#install_browser) | `Path` | 下载、解压或复用配套浏览器 |
38
+ | [get_browser_path](installation.md#get_browser_path) | `Path` | 取得当前安装的浏览器入口 |
39
+
40
+ 参数、默认值、返回值和示例见[安装指南](installation.md#python-安装-api)。
@@ -0,0 +1,46 @@
1
+ (()=>{
2
+ const root=document.documentElement;
3
+ const store=(key,value)=>{try{localStorage.setItem(key,value)}catch{}};
4
+ try{root.dataset.theme=localStorage.getItem('ys-doc-theme')||'light';if(localStorage.getItem('ys-doc-large')==='1')document.body.classList.add('large-text')}catch{}
5
+ document.querySelector('#theme-toggle').addEventListener('click',()=>{root.dataset.theme=root.dataset.theme==='dark'?'light':'dark';store('ys-doc-theme',root.dataset.theme)});
6
+ document.querySelector('#font-toggle').addEventListener('click',()=>{document.body.classList.toggle('large-text');store('ys-doc-large',document.body.classList.contains('large-text')?'1':'0')});
7
+ document.querySelector('#menu-toggle').addEventListener('click',()=>document.body.classList.toggle('nav-open'));
8
+ document.querySelector('main').addEventListener('click',()=>document.body.classList.remove('nav-open'));
9
+ document.querySelectorAll('.copy-code').forEach(button=>button.addEventListener('click',async()=>{
10
+ const code=button.closest('.code-block').querySelector('code').textContent;
11
+ let copied=false;
12
+ try{await navigator.clipboard.writeText(code);copied=true}catch{
13
+ const field=document.createElement('textarea');field.value=code;field.style.position='fixed';field.style.left='-9999px';document.body.append(field);field.select();copied=document.execCommand('copy');field.remove();
14
+ }
15
+ button.textContent=copied?'已复制':'请手动复制';button.dataset.copied=String(copied);
16
+ setTimeout(()=>button.textContent='复制代码',1600);
17
+ }));
18
+ const dialog=document.querySelector('#search-dialog'),input=document.querySelector('#search-input'),results=document.querySelector('#search-results');
19
+ const openSearch=()=>{if(!dialog.open)dialog.showModal();input.focus()};
20
+ document.querySelector('#search-open').addEventListener('click',openSearch);
21
+ document.querySelector('#search-close').addEventListener('click',()=>dialog.close());
22
+ dialog.addEventListener('click',event=>{if(event.target===dialog)dialog.close()});
23
+ document.addEventListener('keydown',event=>{if((event.ctrlKey||event.metaKey)&&event.key.toLowerCase()==='k'){event.preventDefault();openSearch()}});
24
+ let timer;
25
+ input.addEventListener('input',()=>{clearTimeout(timer);timer=setTimeout(search,100)});
26
+ function search(){
27
+ const terms=input.value.trim().toLowerCase().split(/\s+/).filter(Boolean);results.replaceChildren();
28
+ if(!terms.length){const p=document.createElement('div');p.className='search-message';p.textContent='搜索 API、参数或问题,例如 drag_element、hold_ms、代理。';results.append(p);return}
29
+ const hits=(window.DOC_SEARCH||[]).map(item=>{
30
+ const title=(item.page+' '+item.title).toLowerCase(),text=item.text.toLowerCase();
31
+ if(!terms.every(term=>title.includes(term)||text.includes(term)))return null;
32
+ return {item,score:terms.reduce((score,term)=>score+(item.title.toLowerCase()===term?30:title.includes(term)?10:1),0)};
33
+ }).filter(Boolean).sort((a,b)=>b.score-a.score).slice(0,40);
34
+ if(!hits.length){const p=document.createElement('div');p.className='search-message';p.textContent='没有匹配结果,试试方法名或更短的关键词。';results.append(p)}
35
+ for(const {item} of hits){
36
+ const a=document.createElement('a');a.className='search-result';a.href=(root.dataset.docRoot||'')+item.url;
37
+ const title=document.createElement('strong');title.textContent=item.title;
38
+ const context=document.createElement('small');context.textContent=item.page;
39
+ const excerpt=document.createElement('small');const low=item.text.toLowerCase();let at=low.indexOf(terms[0]);at=Math.max(0,at-45);excerpt.textContent=item.text.slice(at,at+150);
40
+ a.append(title,context,excerpt);a.addEventListener('click',()=>dialog.close());results.append(a);
41
+ }
42
+ }
43
+ const toc=[...document.querySelectorAll('.toc a')];
44
+ if('IntersectionObserver' in window){const observer=new IntersectionObserver(entries=>{for(const e of entries)if(e.isIntersecting){toc.forEach(a=>a.classList.toggle('active',decodeURIComponent(a.hash.slice(1))===e.target.id))}},{rootMargin:'-12% 0px -70% 0px'});document.querySelectorAll('main h2,main h3').forEach(h=>observer.observe(h))}
45
+ search();
46
+ })();