From 5d705b5687f3ebd370c3c541385e3cb6a2702999 Mon Sep 17 00:00:00 2001 From: rr13k <45162461+rr13k@users.noreply.github.com> Date: Tue, 12 Nov 2024 07:26:39 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20=20@=209a83c?= =?UTF-8?q?f3de55163a4bfaf5f906cb3025987adc58e=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 404.html | 2 +- README.html | 6 ++--- ...E.md.09f1b56f.js => README.md.0aac98d3.js} | 2 +- ...56f.lean.js => README.md.0aac98d3.lean.js} | 2 +- ...4bf59e.js => guide_api_api.md.3a40f90b.js} | 2 +- ...n.js => guide_api_api.md.3a40f90b.lean.js} | 2 +- ...f24b0.js => guide_api_func.md.e053ab53.js} | 2 +- ....js => guide_api_func.md.e053ab53.lean.js} | 2 +- ...4e.js => guide_api_httpApi.md.20f2b390.js} | 2 +- ... => guide_api_httpApi.md.20f2b390.lean.js} | 2 +- ...f.js => guide_api_instruct.md.25a9690d.js} | 2 +- ...=> guide_api_instruct.md.25a9690d.lean.js} | 2 +- ...s => guide_api_pasteConfig.md.9fcb331a.js} | 2 +- ...guide_api_pasteConfig.md.9fcb331a.lean.js} | 2 +- ...d83e.js => guide_api_wsApi.md.2af3c25e.js} | 2 +- ...js => guide_api_wsApi.md.2af3c25e.lean.js} | 2 +- ...be.js => guide_course_step.md.6945c8cc.js} | 2 +- ... => guide_course_step.md.6945c8cc.lean.js} | 2 +- ...7.js => guide_course_trace.md.7506394b.js} | 2 +- ...=> guide_course_trace.md.7506394b.lean.js} | 2 +- ...759.js => guide_course_use.md.fcbd62a3.js} | 2 +- ...s => guide_course_use.md.fcbd62a3.lean.js} | 2 +- ...49.js => guide_data_cookie.md.14e51f6b.js} | 2 +- ... => guide_data_cookie.md.14e51f6b.lean.js} | 2 +- ...js => guide_data_errorCode.md.1ebe6f29.js} | 2 +- ... guide_data_errorCode.md.1ebe6f29.lean.js} | 2 +- ...f.js => guide_data_keyCode.md.fdc92244.js} | 2 +- ...=> guide_data_keyCode.md.fdc92244.lean.js} | 2 +- ...7a747e6.js => guide_ex_ex1.md.8b03ad5c.js} | 2 +- ...an.js => guide_ex_ex1.md.8b03ad5c.lean.js} | 2 +- ...2f5f59a.js => guide_ex_ex2.md.bb7ab9aa.js} | 2 +- ...an.js => guide_ex_ex2.md.bb7ab9aa.lean.js} | 2 +- ...5.js => guide_exam_apiHook.md.c80bf311.js} | 2 +- ...=> guide_exam_apiHook.md.c80bf311.lean.js} | 2 +- ...1.js => guide_exam_baseOpt.md.9b964e0d.js} | 2 +- ...=> guide_exam_baseOpt.md.9b964e0d.lean.js} | 2 +- ...9a.js => guide_exam_mobile.md.7777c4e4.js} | 2 +- ... => guide_exam_mobile.md.7777c4e4.lean.js} | 2 +- ...s => guide_exam_modifyDate.md.f83b945a.js} | 2 +- ...guide_exam_modifyDate.md.f83b945a.lean.js} | 2 +- assets/guide_exam_problem.md.06a375c3.js | 21 ++++++++++++++++++ assets/guide_exam_problem.md.06a375c3.lean.js | 21 ++++++++++++++++++ assets/guide_exam_problem.md.0f24a69f.js | 5 ----- assets/guide_exam_problem.md.0f24a69f.lean.js | 5 ----- ...cc.js => guide_exam_select.md.27938d2d.js} | 2 +- ... => guide_exam_select.md.27938d2d.lean.js} | 2 +- ... => guide_instructs_assert.md.a0d683db.js} | 2 +- ...uide_instructs_assert.md.a0d683db.lean.js} | 2 +- ...=> guide_instructs_browser.md.274f8df1.js} | 2 +- ...ide_instructs_browser.md.274f8df1.lean.js} | 2 +- ...=> guide_instructs_cookies.md.d27d31fc.js} | 2 +- ...ide_instructs_cookies.md.d27d31fc.lean.js} | 2 +- ....js => guide_instructs_dom.md.71fe5e00.js} | 2 +- ...> guide_instructs_dom.md.71fe5e00.lean.js} | 2 +- ... => guide_instructs_global.md.cc3b804e.js} | 2 +- ...uide_instructs_global.md.cc3b804e.lean.js} | 2 +- ....js => guide_instructs_img.md.7a8493d8.js} | 2 +- ...> guide_instructs_img.md.7a8493d8.lean.js} | 2 +- ...> guide_instructs_keyboard.md.49337e42.js} | 2 +- ...de_instructs_keyboard.md.49337e42.lean.js} | 2 +- ...s => guide_instructs_mouse.md.6a54335d.js} | 2 +- ...guide_instructs_mouse.md.6a54335d.lean.js} | 2 +- ...js => guide_instructs_page.md.a70f8924.js} | 2 +- ... guide_instructs_page.md.a70f8924.lean.js} | 2 +- ...> guide_introduce_download.md.c2717140.js} | 2 +- ...de_introduce_download.md.c2717140.lean.js} | 2 +- ...=> guide_introduce_history.md.ee9ba7fd.js} | 2 +- ...ide_introduce_history.md.ee9ba7fd.lean.js} | 2 +- ... guide_introduce_introduce.md.c9292364.js} | 2 +- ...e_introduce_introduce.md.c9292364.lean.js} | 2 +- ...ex.md.42a3be25.js => index.md.5a346fa3.js} | 2 +- ...be25.lean.js => index.md.5a346fa3.lean.js} | 2 +- guide/api/api.html | 6 ++--- guide/api/func.html | 6 ++--- guide/api/httpApi.html | 6 ++--- guide/api/instruct.html | 6 ++--- guide/api/pasteConfig.html | 6 ++--- guide/api/wsApi.html | 6 ++--- guide/course/step.html | 6 ++--- guide/course/trace.html | 6 ++--- guide/course/use.html | 6 ++--- guide/data/cookie.html | 6 ++--- guide/data/errorCode.html | 6 ++--- guide/data/keyCode.html | 6 ++--- guide/ex/ex1.html | 6 ++--- guide/ex/ex2.html | 6 ++--- guide/exam/apiHook.html | 6 ++--- guide/exam/baseOpt.html | 6 ++--- guide/exam/mobile.html | 6 ++--- guide/exam/modifyDate.html | 6 ++--- guide/exam/problem.html | 22 ++++++++++++++++--- guide/exam/select.html | 6 ++--- guide/instructs/assert.html | 6 ++--- guide/instructs/browser.html | 6 ++--- guide/instructs/cookies.html | 6 ++--- guide/instructs/dom.html | 6 ++--- guide/instructs/global.html | 6 ++--- guide/instructs/img.html | 6 ++--- guide/instructs/keyboard.html | 6 ++--- guide/instructs/mouse.html | 6 ++--- guide/instructs/page.html | 6 ++--- guide/introduce/download.html | 6 ++--- guide/introduce/history.html | 6 ++--- guide/introduce/introduce.html | 6 ++--- hashmap.json | 2 +- index.html | 6 ++--- 106 files changed, 228 insertions(+), 180 deletions(-) rename assets/{README.md.09f1b56f.js => README.md.0aac98d3.js} (95%) rename assets/{README.md.09f1b56f.lean.js => README.md.0aac98d3.lean.js} (95%) rename assets/{guide_api_api.md.6c4bf59e.js => guide_api_api.md.3a40f90b.js} (94%) rename assets/{guide_api_api.md.6c4bf59e.lean.js => guide_api_api.md.3a40f90b.lean.js} (94%) rename assets/{guide_api_func.md.670f24b0.js => guide_api_func.md.e053ab53.js} (90%) rename assets/{guide_api_func.md.670f24b0.lean.js => guide_api_func.md.e053ab53.lean.js} (90%) rename assets/{guide_api_httpApi.md.53742a4e.js => guide_api_httpApi.md.20f2b390.js} (99%) rename assets/{guide_api_httpApi.md.53742a4e.lean.js => guide_api_httpApi.md.20f2b390.lean.js} (99%) rename assets/{guide_api_instruct.md.c1427e4f.js => guide_api_instruct.md.25a9690d.js} (95%) rename assets/{guide_api_instruct.md.c1427e4f.lean.js => guide_api_instruct.md.25a9690d.lean.js} (95%) rename assets/{guide_api_pasteConfig.md.89c5ff24.js => guide_api_pasteConfig.md.9fcb331a.js} (99%) rename assets/{guide_api_pasteConfig.md.89c5ff24.lean.js => guide_api_pasteConfig.md.9fcb331a.lean.js} (99%) rename assets/{guide_api_wsApi.md.7608d83e.js => guide_api_wsApi.md.2af3c25e.js} (99%) rename assets/{guide_api_wsApi.md.7608d83e.lean.js => guide_api_wsApi.md.2af3c25e.lean.js} (99%) rename assets/{guide_course_step.md.a47386be.js => guide_course_step.md.6945c8cc.js} (97%) rename assets/{guide_course_step.md.a47386be.lean.js => guide_course_step.md.6945c8cc.lean.js} (97%) rename assets/{guide_course_trace.md.af922a17.js => guide_course_trace.md.7506394b.js} (99%) rename assets/{guide_course_trace.md.af922a17.lean.js => guide_course_trace.md.7506394b.lean.js} (99%) rename assets/{guide_course_use.md.ba400759.js => guide_course_use.md.fcbd62a3.js} (98%) rename assets/{guide_course_use.md.ba400759.lean.js => guide_course_use.md.fcbd62a3.lean.js} (98%) rename assets/{guide_data_cookie.md.fb3a3749.js => guide_data_cookie.md.14e51f6b.js} (96%) rename assets/{guide_data_cookie.md.fb3a3749.lean.js => guide_data_cookie.md.14e51f6b.lean.js} (96%) rename assets/{guide_data_errorCode.md.451fc8f9.js => guide_data_errorCode.md.1ebe6f29.js} (91%) rename assets/{guide_data_errorCode.md.451fc8f9.lean.js => guide_data_errorCode.md.1ebe6f29.lean.js} (91%) rename assets/{guide_data_keyCode.md.30c939bf.js => guide_data_keyCode.md.fdc92244.js} (99%) rename assets/{guide_data_keyCode.md.30c939bf.lean.js => guide_data_keyCode.md.fdc92244.lean.js} (99%) rename assets/{guide_ex_ex1.md.b7a747e6.js => guide_ex_ex1.md.8b03ad5c.js} (95%) rename assets/{guide_ex_ex1.md.b7a747e6.lean.js => guide_ex_ex1.md.8b03ad5c.lean.js} (95%) rename assets/{guide_ex_ex2.md.a2f5f59a.js => guide_ex_ex2.md.bb7ab9aa.js} (96%) rename assets/{guide_ex_ex2.md.a2f5f59a.lean.js => guide_ex_ex2.md.bb7ab9aa.lean.js} (96%) rename assets/{guide_exam_apiHook.md.93510b75.js => guide_exam_apiHook.md.c80bf311.js} (99%) rename assets/{guide_exam_apiHook.md.93510b75.lean.js => guide_exam_apiHook.md.c80bf311.lean.js} (99%) rename assets/{guide_exam_baseOpt.md.b7e41691.js => guide_exam_baseOpt.md.9b964e0d.js} (99%) rename assets/{guide_exam_baseOpt.md.b7e41691.lean.js => guide_exam_baseOpt.md.9b964e0d.lean.js} (99%) rename assets/{guide_exam_mobile.md.7d7bb39a.js => guide_exam_mobile.md.7777c4e4.js} (98%) rename assets/{guide_exam_mobile.md.7d7bb39a.lean.js => guide_exam_mobile.md.7777c4e4.lean.js} (98%) rename assets/{guide_exam_modifyDate.md.731f4685.js => guide_exam_modifyDate.md.f83b945a.js} (99%) rename assets/{guide_exam_modifyDate.md.731f4685.lean.js => guide_exam_modifyDate.md.f83b945a.lean.js} (99%) create mode 100644 assets/guide_exam_problem.md.06a375c3.js create mode 100644 assets/guide_exam_problem.md.06a375c3.lean.js delete mode 100644 assets/guide_exam_problem.md.0f24a69f.js delete mode 100644 assets/guide_exam_problem.md.0f24a69f.lean.js rename assets/{guide_exam_select.md.a744a5cc.js => guide_exam_select.md.27938d2d.js} (99%) rename assets/{guide_exam_select.md.a744a5cc.lean.js => guide_exam_select.md.27938d2d.lean.js} (99%) rename assets/{guide_instructs_assert.md.92c2bef8.js => guide_instructs_assert.md.a0d683db.js} (99%) rename assets/{guide_instructs_assert.md.92c2bef8.lean.js => guide_instructs_assert.md.a0d683db.lean.js} (99%) rename assets/{guide_instructs_browser.md.ccad7dbc.js => guide_instructs_browser.md.274f8df1.js} (99%) rename assets/{guide_instructs_browser.md.ccad7dbc.lean.js => guide_instructs_browser.md.274f8df1.lean.js} (99%) rename assets/{guide_instructs_cookies.md.1b39e556.js => guide_instructs_cookies.md.d27d31fc.js} (98%) rename assets/{guide_instructs_cookies.md.1b39e556.lean.js => guide_instructs_cookies.md.d27d31fc.lean.js} (98%) rename assets/{guide_instructs_dom.md.58e1f351.js => guide_instructs_dom.md.71fe5e00.js} (99%) rename assets/{guide_instructs_dom.md.58e1f351.lean.js => guide_instructs_dom.md.71fe5e00.lean.js} (99%) rename assets/{guide_instructs_global.md.f509fcc9.js => guide_instructs_global.md.cc3b804e.js} (99%) rename assets/{guide_instructs_global.md.f509fcc9.lean.js => guide_instructs_global.md.cc3b804e.lean.js} (99%) rename assets/{guide_instructs_img.md.f4f507a1.js => guide_instructs_img.md.7a8493d8.js} (97%) rename assets/{guide_instructs_img.md.f4f507a1.lean.js => guide_instructs_img.md.7a8493d8.lean.js} (97%) rename assets/{guide_instructs_keyboard.md.30e83a47.js => guide_instructs_keyboard.md.49337e42.js} (98%) rename assets/{guide_instructs_keyboard.md.30e83a47.lean.js => guide_instructs_keyboard.md.49337e42.lean.js} (98%) rename assets/{guide_instructs_mouse.md.da223a7b.js => guide_instructs_mouse.md.6a54335d.js} (98%) rename assets/{guide_instructs_mouse.md.da223a7b.lean.js => guide_instructs_mouse.md.6a54335d.lean.js} (98%) rename assets/{guide_instructs_page.md.1f787bd3.js => guide_instructs_page.md.a70f8924.js} (99%) rename assets/{guide_instructs_page.md.1f787bd3.lean.js => guide_instructs_page.md.a70f8924.lean.js} (99%) rename assets/{guide_introduce_download.md.de784c45.js => guide_introduce_download.md.c2717140.js} (98%) rename assets/{guide_introduce_download.md.de784c45.lean.js => guide_introduce_download.md.c2717140.lean.js} (98%) rename assets/{guide_introduce_history.md.a68dc1ee.js => guide_introduce_history.md.ee9ba7fd.js} (96%) rename assets/{guide_introduce_history.md.a68dc1ee.lean.js => guide_introduce_history.md.ee9ba7fd.lean.js} (96%) rename assets/{guide_introduce_introduce.md.735daef4.js => guide_introduce_introduce.md.c9292364.js} (97%) rename assets/{guide_introduce_introduce.md.735daef4.lean.js => guide_introduce_introduce.md.c9292364.lean.js} (97%) rename assets/{index.md.42a3be25.js => index.md.5a346fa3.js} (97%) rename assets/{index.md.42a3be25.lean.js => index.md.5a346fa3.lean.js} (97%) diff --git a/404.html b/404.html index ec283c0..358a966 100644 --- a/404.html +++ b/404.html @@ -15,7 +15,7 @@
Skip to content

404

PAGE NOT FOUND

But if you don't change your direction, and if you keep looking, you may end up where you are heading.
- + \ No newline at end of file diff --git a/README.html b/README.html index c547eb9..fe512ea 100644 --- a/README.html +++ b/README.html @@ -11,14 +11,14 @@ - + -
Skip to content

show

- +
Skip to content

show

+ \ No newline at end of file diff --git a/assets/README.md.09f1b56f.js b/assets/README.md.0aac98d3.js similarity index 95% rename from assets/README.md.09f1b56f.js rename to assets/README.md.0aac98d3.js index e8dc0e4..ee3d8d0 100644 --- a/assets/README.md.09f1b56f.js +++ b/assets/README.md.0aac98d3.js @@ -1 +1 @@ -import{_ as o,o as a,c as s,k as e,a as r}from"./chunks/framework.58a9e095.js";const i="/ok.mp4",u=JSON.parse('{"title":"show","description":"","frontmatter":{"home":true,"heroImage":"strawberry.ico","heroText":"YinTao","tagline":"WEB--UI高级智能自动化驱动引擎","actionText":"了解更多 →","actionLink":"/guide/introduce/introduce","features":[{"title":"智能录制","details":"YinTao 内置独创的智能录制模式,可有效提高录制准确率,提高case复用能力。"},{"title":"快速执行","details":"执行使用浏览器内部cdp完成, 执行速度selenium快3-5倍,并可通过js脚本完成精细化操作。"},{"title":"简单","details":"我们提供最简单的脚本维护模式,流式case运行,丰富的指令,让用户以最低的成本完成复杂的测试。"}],"footer":"MIT Licensed | Copyright © 2020 京东科技-数字营销营销部-测试技术组"},"headers":[],"relativePath":"README.md","filePath":"README.md","lastUpdated":1730861693000}'),n={name:"README.md"};function c(l,t,d,p,h,m){return a(),s("div",null,t[0]||(t[0]=[e("h1",{id:"show",tabindex:"-1"},[r("show "),e("a",{class:"header-anchor",href:"#show","aria-label":'Permalink to "show"'},"​")],-1),e("p",{style:{"text-align":"center"}},[e("video",{src:i,controls:"controls",loop:"loop",width:"1000"})],-1)]))}const _=o(n,[["render",c]]);export{u as __pageData,_ as default}; +import{_ as o,o as a,c as s,k as e,a as r}from"./chunks/framework.58a9e095.js";const i="/ok.mp4",u=JSON.parse('{"title":"show","description":"","frontmatter":{"home":true,"heroImage":"strawberry.ico","heroText":"YinTao","tagline":"WEB--UI高级智能自动化驱动引擎","actionText":"了解更多 →","actionLink":"/guide/introduce/introduce","features":[{"title":"智能录制","details":"YinTao 内置独创的智能录制模式,可有效提高录制准确率,提高case复用能力。"},{"title":"快速执行","details":"执行使用浏览器内部cdp完成, 执行速度selenium快3-5倍,并可通过js脚本完成精细化操作。"},{"title":"简单","details":"我们提供最简单的脚本维护模式,流式case运行,丰富的指令,让用户以最低的成本完成复杂的测试。"}],"footer":"MIT Licensed | Copyright © 2020 京东科技-数字营销营销部-测试技术组"},"headers":[],"relativePath":"README.md","filePath":"README.md","lastUpdated":1731396361000}'),n={name:"README.md"};function c(l,t,d,p,h,m){return a(),s("div",null,t[0]||(t[0]=[e("h1",{id:"show",tabindex:"-1"},[r("show "),e("a",{class:"header-anchor",href:"#show","aria-label":'Permalink to "show"'},"​")],-1),e("p",{style:{"text-align":"center"}},[e("video",{src:i,controls:"controls",loop:"loop",width:"1000"})],-1)]))}const _=o(n,[["render",c]]);export{u as __pageData,_ as default}; diff --git a/assets/README.md.09f1b56f.lean.js b/assets/README.md.0aac98d3.lean.js similarity index 95% rename from assets/README.md.09f1b56f.lean.js rename to assets/README.md.0aac98d3.lean.js index e8dc0e4..ee3d8d0 100644 --- a/assets/README.md.09f1b56f.lean.js +++ b/assets/README.md.0aac98d3.lean.js @@ -1 +1 @@ -import{_ as o,o as a,c as s,k as e,a as r}from"./chunks/framework.58a9e095.js";const i="/ok.mp4",u=JSON.parse('{"title":"show","description":"","frontmatter":{"home":true,"heroImage":"strawberry.ico","heroText":"YinTao","tagline":"WEB--UI高级智能自动化驱动引擎","actionText":"了解更多 →","actionLink":"/guide/introduce/introduce","features":[{"title":"智能录制","details":"YinTao 内置独创的智能录制模式,可有效提高录制准确率,提高case复用能力。"},{"title":"快速执行","details":"执行使用浏览器内部cdp完成, 执行速度selenium快3-5倍,并可通过js脚本完成精细化操作。"},{"title":"简单","details":"我们提供最简单的脚本维护模式,流式case运行,丰富的指令,让用户以最低的成本完成复杂的测试。"}],"footer":"MIT Licensed | Copyright © 2020 京东科技-数字营销营销部-测试技术组"},"headers":[],"relativePath":"README.md","filePath":"README.md","lastUpdated":1730861693000}'),n={name:"README.md"};function c(l,t,d,p,h,m){return a(),s("div",null,t[0]||(t[0]=[e("h1",{id:"show",tabindex:"-1"},[r("show "),e("a",{class:"header-anchor",href:"#show","aria-label":'Permalink to "show"'},"​")],-1),e("p",{style:{"text-align":"center"}},[e("video",{src:i,controls:"controls",loop:"loop",width:"1000"})],-1)]))}const _=o(n,[["render",c]]);export{u as __pageData,_ as default}; +import{_ as o,o as a,c as s,k as e,a as r}from"./chunks/framework.58a9e095.js";const i="/ok.mp4",u=JSON.parse('{"title":"show","description":"","frontmatter":{"home":true,"heroImage":"strawberry.ico","heroText":"YinTao","tagline":"WEB--UI高级智能自动化驱动引擎","actionText":"了解更多 →","actionLink":"/guide/introduce/introduce","features":[{"title":"智能录制","details":"YinTao 内置独创的智能录制模式,可有效提高录制准确率,提高case复用能力。"},{"title":"快速执行","details":"执行使用浏览器内部cdp完成, 执行速度selenium快3-5倍,并可通过js脚本完成精细化操作。"},{"title":"简单","details":"我们提供最简单的脚本维护模式,流式case运行,丰富的指令,让用户以最低的成本完成复杂的测试。"}],"footer":"MIT Licensed | Copyright © 2020 京东科技-数字营销营销部-测试技术组"},"headers":[],"relativePath":"README.md","filePath":"README.md","lastUpdated":1731396361000}'),n={name:"README.md"};function c(l,t,d,p,h,m){return a(),s("div",null,t[0]||(t[0]=[e("h1",{id:"show",tabindex:"-1"},[r("show "),e("a",{class:"header-anchor",href:"#show","aria-label":'Permalink to "show"'},"​")],-1),e("p",{style:{"text-align":"center"}},[e("video",{src:i,controls:"controls",loop:"loop",width:"1000"})],-1)]))}const _=o(n,[["render",c]]);export{u as __pageData,_ as default}; diff --git a/assets/guide_api_api.md.6c4bf59e.js b/assets/guide_api_api.md.3a40f90b.js similarity index 94% rename from assets/guide_api_api.md.6c4bf59e.js rename to assets/guide_api_api.md.3a40f90b.js index 5382b43..505e9a7 100644 --- a/assets/guide_api_api.md.6c4bf59e.js +++ b/assets/guide_api_api.md.3a40f90b.js @@ -1 +1 @@ -import{_ as i,o as r,c as o,k as e,a}from"./chunks/framework.58a9e095.js";const m=JSON.parse('{"title":"OPEN-API","description":"","frontmatter":{},"headers":[],"relativePath":"guide/api/api.md","filePath":"guide/api/api.md","lastUpdated":1730861693000}'),n={name:"guide/api/api.md"};function d(l,t,p,s,c,h){return r(),o("div",null,t[0]||(t[0]=[e("h1",{id:"open-api",tabindex:"-1"},[a("OPEN-API "),e("a",{class:"header-anchor",href:"#open-api","aria-label":'Permalink to "OPEN-API"'},"​")],-1),e("h2",{id:"描述",tabindex:"-1"},[a("描述 "),e("a",{class:"header-anchor",href:"#描述","aria-label":'Permalink to "描述"'},"​")],-1),e("p",null,[a("为满足各个平台用户,以及三方用户的使用需求。"),e("code",null,"chery"),a("提供了强大的开放api能力。以满足用户在不修改源码的情况下,自主完成功能接入使用。 并同时支持"),e("code",null,"http"),a(","),e("code",null,"websocket"),a("两种接入协议,用户可以自行选择接入模式。更好的完成功能接入。")],-1)]))}const f=i(n,[["render",d]]);export{m as __pageData,f as default}; +import{_ as i,o as r,c as o,k as e,a}from"./chunks/framework.58a9e095.js";const m=JSON.parse('{"title":"OPEN-API","description":"","frontmatter":{},"headers":[],"relativePath":"guide/api/api.md","filePath":"guide/api/api.md","lastUpdated":1731396361000}'),n={name:"guide/api/api.md"};function d(l,t,p,s,c,h){return r(),o("div",null,t[0]||(t[0]=[e("h1",{id:"open-api",tabindex:"-1"},[a("OPEN-API "),e("a",{class:"header-anchor",href:"#open-api","aria-label":'Permalink to "OPEN-API"'},"​")],-1),e("h2",{id:"描述",tabindex:"-1"},[a("描述 "),e("a",{class:"header-anchor",href:"#描述","aria-label":'Permalink to "描述"'},"​")],-1),e("p",null,[a("为满足各个平台用户,以及三方用户的使用需求。"),e("code",null,"chery"),a("提供了强大的开放api能力。以满足用户在不修改源码的情况下,自主完成功能接入使用。 并同时支持"),e("code",null,"http"),a(","),e("code",null,"websocket"),a("两种接入协议,用户可以自行选择接入模式。更好的完成功能接入。")],-1)]))}const f=i(n,[["render",d]]);export{m as __pageData,f as default}; diff --git a/assets/guide_api_api.md.6c4bf59e.lean.js b/assets/guide_api_api.md.3a40f90b.lean.js similarity index 94% rename from assets/guide_api_api.md.6c4bf59e.lean.js rename to assets/guide_api_api.md.3a40f90b.lean.js index 5382b43..505e9a7 100644 --- a/assets/guide_api_api.md.6c4bf59e.lean.js +++ b/assets/guide_api_api.md.3a40f90b.lean.js @@ -1 +1 @@ -import{_ as i,o as r,c as o,k as e,a}from"./chunks/framework.58a9e095.js";const m=JSON.parse('{"title":"OPEN-API","description":"","frontmatter":{},"headers":[],"relativePath":"guide/api/api.md","filePath":"guide/api/api.md","lastUpdated":1730861693000}'),n={name:"guide/api/api.md"};function d(l,t,p,s,c,h){return r(),o("div",null,t[0]||(t[0]=[e("h1",{id:"open-api",tabindex:"-1"},[a("OPEN-API "),e("a",{class:"header-anchor",href:"#open-api","aria-label":'Permalink to "OPEN-API"'},"​")],-1),e("h2",{id:"描述",tabindex:"-1"},[a("描述 "),e("a",{class:"header-anchor",href:"#描述","aria-label":'Permalink to "描述"'},"​")],-1),e("p",null,[a("为满足各个平台用户,以及三方用户的使用需求。"),e("code",null,"chery"),a("提供了强大的开放api能力。以满足用户在不修改源码的情况下,自主完成功能接入使用。 并同时支持"),e("code",null,"http"),a(","),e("code",null,"websocket"),a("两种接入协议,用户可以自行选择接入模式。更好的完成功能接入。")],-1)]))}const f=i(n,[["render",d]]);export{m as __pageData,f as default}; +import{_ as i,o as r,c as o,k as e,a}from"./chunks/framework.58a9e095.js";const m=JSON.parse('{"title":"OPEN-API","description":"","frontmatter":{},"headers":[],"relativePath":"guide/api/api.md","filePath":"guide/api/api.md","lastUpdated":1731396361000}'),n={name:"guide/api/api.md"};function d(l,t,p,s,c,h){return r(),o("div",null,t[0]||(t[0]=[e("h1",{id:"open-api",tabindex:"-1"},[a("OPEN-API "),e("a",{class:"header-anchor",href:"#open-api","aria-label":'Permalink to "OPEN-API"'},"​")],-1),e("h2",{id:"描述",tabindex:"-1"},[a("描述 "),e("a",{class:"header-anchor",href:"#描述","aria-label":'Permalink to "描述"'},"​")],-1),e("p",null,[a("为满足各个平台用户,以及三方用户的使用需求。"),e("code",null,"chery"),a("提供了强大的开放api能力。以满足用户在不修改源码的情况下,自主完成功能接入使用。 并同时支持"),e("code",null,"http"),a(","),e("code",null,"websocket"),a("两种接入协议,用户可以自行选择接入模式。更好的完成功能接入。")],-1)]))}const f=i(n,[["render",d]]);export{m as __pageData,f as default}; diff --git a/assets/guide_api_func.md.670f24b0.js b/assets/guide_api_func.md.e053ab53.js similarity index 90% rename from assets/guide_api_func.md.670f24b0.js rename to assets/guide_api_func.md.e053ab53.js index 0eea83d..464d4b3 100644 --- a/assets/guide_api_func.md.670f24b0.js +++ b/assets/guide_api_func.md.e053ab53.js @@ -1 +1 @@ -import{_ as t,o as s,c as r,k as e,a as n}from"./chunks/framework.58a9e095.js";const o="/assets/ex2.5d3916de.png",_=JSON.parse('{"title":"开发架构","description":"","frontmatter":{},"headers":[],"relativePath":"guide/api/func.md","filePath":"guide/api/func.md","lastUpdated":1730861693000}'),d={name:"guide/api/func.md"};function i(c,a,l,p,f,m){return s(),r("div",null,a[0]||(a[0]=[e("h1",{id:"开发架构",tabindex:"-1"},[n("开发架构 "),e("a",{class:"header-anchor",href:"#开发架构","aria-label":'Permalink to "开发架构"'},"​")],-1),e("img",{src:o,alt:"用例目录",style:{zoom:"100%"}},null,-1)]))}const g=t(d,[["render",i]]);export{_ as __pageData,g as default}; +import{_ as t,o as s,c as r,k as e,a as n}from"./chunks/framework.58a9e095.js";const o="/assets/ex2.5d3916de.png",_=JSON.parse('{"title":"开发架构","description":"","frontmatter":{},"headers":[],"relativePath":"guide/api/func.md","filePath":"guide/api/func.md","lastUpdated":1731396361000}'),d={name:"guide/api/func.md"};function i(c,a,l,p,f,m){return s(),r("div",null,a[0]||(a[0]=[e("h1",{id:"开发架构",tabindex:"-1"},[n("开发架构 "),e("a",{class:"header-anchor",href:"#开发架构","aria-label":'Permalink to "开发架构"'},"​")],-1),e("img",{src:o,alt:"用例目录",style:{zoom:"100%"}},null,-1)]))}const g=t(d,[["render",i]]);export{_ as __pageData,g as default}; diff --git a/assets/guide_api_func.md.670f24b0.lean.js b/assets/guide_api_func.md.e053ab53.lean.js similarity index 90% rename from assets/guide_api_func.md.670f24b0.lean.js rename to assets/guide_api_func.md.e053ab53.lean.js index 0eea83d..464d4b3 100644 --- a/assets/guide_api_func.md.670f24b0.lean.js +++ b/assets/guide_api_func.md.e053ab53.lean.js @@ -1 +1 @@ -import{_ as t,o as s,c as r,k as e,a as n}from"./chunks/framework.58a9e095.js";const o="/assets/ex2.5d3916de.png",_=JSON.parse('{"title":"开发架构","description":"","frontmatter":{},"headers":[],"relativePath":"guide/api/func.md","filePath":"guide/api/func.md","lastUpdated":1730861693000}'),d={name:"guide/api/func.md"};function i(c,a,l,p,f,m){return s(),r("div",null,a[0]||(a[0]=[e("h1",{id:"开发架构",tabindex:"-1"},[n("开发架构 "),e("a",{class:"header-anchor",href:"#开发架构","aria-label":'Permalink to "开发架构"'},"​")],-1),e("img",{src:o,alt:"用例目录",style:{zoom:"100%"}},null,-1)]))}const g=t(d,[["render",i]]);export{_ as __pageData,g as default}; +import{_ as t,o as s,c as r,k as e,a as n}from"./chunks/framework.58a9e095.js";const o="/assets/ex2.5d3916de.png",_=JSON.parse('{"title":"开发架构","description":"","frontmatter":{},"headers":[],"relativePath":"guide/api/func.md","filePath":"guide/api/func.md","lastUpdated":1731396361000}'),d={name:"guide/api/func.md"};function i(c,a,l,p,f,m){return s(),r("div",null,a[0]||(a[0]=[e("h1",{id:"开发架构",tabindex:"-1"},[n("开发架构 "),e("a",{class:"header-anchor",href:"#开发架构","aria-label":'Permalink to "开发架构"'},"​")],-1),e("img",{src:o,alt:"用例目录",style:{zoom:"100%"}},null,-1)]))}const g=t(d,[["render",i]]);export{_ as __pageData,g as default}; diff --git a/assets/guide_api_httpApi.md.53742a4e.js b/assets/guide_api_httpApi.md.20f2b390.js similarity index 99% rename from assets/guide_api_httpApi.md.53742a4e.js rename to assets/guide_api_httpApi.md.20f2b390.js index b880ecb..bf9e1a9 100644 --- a/assets/guide_api_httpApi.md.53742a4e.js +++ b/assets/guide_api_httpApi.md.20f2b390.js @@ -1,4 +1,4 @@ -import{_ as t,o as a,c as n,O as o}from"./chunks/framework.58a9e095.js";const y=JSON.parse('{"title":"http接口服务","description":"","frontmatter":{},"headers":[],"relativePath":"guide/api/httpApi.md","filePath":"guide/api/httpApi.md","lastUpdated":1730861693000}'),p={name:"guide/api/httpApi.md"};function l(e,s,c,r,d,i){return a(),n("div",null,s[0]||(s[0]=[o(`

http接口服务

概要

YinTao 启动后默认占用本机8777端口,对外提供http服务。

执行

路径: /run

请求方式: POST

说明: 运行脚本时调用,运行报告随请求返回, 当填写remoteReport时,会立即返回空,执行结果会通过异步返回

参数:

名称类型默认值说明
scriptstring执行的脚本
storageany自定义参数仓库
headlessbooleanfasle无头模式,默认为显示界面运行,true开启无头运行
browserstring'chrome'执行使用的浏览器支持 chromefirefoxwebkit
hostsMaphost信息 {"域名":"解析IP地址"}
cookiesCookie[]可接收cookie数组,用于初始化配置
remoteReportobject远程执行需要上报的地址
audioAudio当需要录制视频时传递,默认不开启视频录制

remoteReport 类型:object:

名称类型默认值说明
resultstring远程上传结果地址
logstring远程上传日志地址
imagestring远程上传图片地址
tracestring远程上传追踪地址,支持本地路径以及http地址。问题追踪

Audio 类型:object:

名称类型默认值说明
urlstring视频存储地址,远程执行时只支持http远程上报地址
sizeObject调整录制时的分辨率
-widthObject录制的宽度
-heighttObject录制的高度

当开始录制时,不要关闭page,否则将丢失关闭页面的录制内容。

请求示例:

js
  request
+import{_ as t,o as a,c as n,O as o}from"./chunks/framework.58a9e095.js";const y=JSON.parse('{"title":"http接口服务","description":"","frontmatter":{},"headers":[],"relativePath":"guide/api/httpApi.md","filePath":"guide/api/httpApi.md","lastUpdated":1731396361000}'),p={name:"guide/api/httpApi.md"};function l(e,s,c,r,d,i){return a(),n("div",null,s[0]||(s[0]=[o(`

http接口服务

概要

YinTao 启动后默认占用本机8777端口,对外提供http服务。

执行

路径: /run

请求方式: POST

说明: 运行脚本时调用,运行报告随请求返回, 当填写remoteReport时,会立即返回空,执行结果会通过异步返回

参数:

名称类型默认值说明
scriptstring执行的脚本
storageany自定义参数仓库
headlessbooleanfasle无头模式,默认为显示界面运行,true开启无头运行
browserstring'chrome'执行使用的浏览器支持 chromefirefoxwebkit
hostsMaphost信息 {"域名":"解析IP地址"}
cookiesCookie[]可接收cookie数组,用于初始化配置
remoteReportobject远程执行需要上报的地址
audioAudio当需要录制视频时传递,默认不开启视频录制

remoteReport 类型:object:

名称类型默认值说明
resultstring远程上传结果地址
logstring远程上传日志地址
imagestring远程上传图片地址
tracestring远程上传追踪地址,支持本地路径以及http地址。问题追踪

Audio 类型:object:

名称类型默认值说明
urlstring视频存储地址,远程执行时只支持http远程上报地址
sizeObject调整录制时的分辨率
-widthObject录制的宽度
-heighttObject录制的高度

当开始录制时,不要关闭page,否则将丢失关闭页面的录制内容。

请求示例:

js
  request
     .post(
       "http://localhost:8777/run",
       {
diff --git a/assets/guide_api_httpApi.md.53742a4e.lean.js b/assets/guide_api_httpApi.md.20f2b390.lean.js
similarity index 99%
rename from assets/guide_api_httpApi.md.53742a4e.lean.js
rename to assets/guide_api_httpApi.md.20f2b390.lean.js
index b880ecb..bf9e1a9 100644
--- a/assets/guide_api_httpApi.md.53742a4e.lean.js
+++ b/assets/guide_api_httpApi.md.20f2b390.lean.js
@@ -1,4 +1,4 @@
-import{_ as t,o as a,c as n,O as o}from"./chunks/framework.58a9e095.js";const y=JSON.parse('{"title":"http接口服务","description":"","frontmatter":{},"headers":[],"relativePath":"guide/api/httpApi.md","filePath":"guide/api/httpApi.md","lastUpdated":1730861693000}'),p={name:"guide/api/httpApi.md"};function l(e,s,c,r,d,i){return a(),n("div",null,s[0]||(s[0]=[o(`

http接口服务

概要

YinTao 启动后默认占用本机8777端口,对外提供http服务。

执行

路径: /run

请求方式: POST

说明: 运行脚本时调用,运行报告随请求返回, 当填写remoteReport时,会立即返回空,执行结果会通过异步返回

参数:

名称类型默认值说明
scriptstring执行的脚本
storageany自定义参数仓库
headlessbooleanfasle无头模式,默认为显示界面运行,true开启无头运行
browserstring'chrome'执行使用的浏览器支持 chromefirefoxwebkit
hostsMaphost信息 {"域名":"解析IP地址"}
cookiesCookie[]可接收cookie数组,用于初始化配置
remoteReportobject远程执行需要上报的地址
audioAudio当需要录制视频时传递,默认不开启视频录制

remoteReport 类型:object:

名称类型默认值说明
resultstring远程上传结果地址
logstring远程上传日志地址
imagestring远程上传图片地址
tracestring远程上传追踪地址,支持本地路径以及http地址。问题追踪

Audio 类型:object:

名称类型默认值说明
urlstring视频存储地址,远程执行时只支持http远程上报地址
sizeObject调整录制时的分辨率
-widthObject录制的宽度
-heighttObject录制的高度

当开始录制时,不要关闭page,否则将丢失关闭页面的录制内容。

请求示例:

js
  request
+import{_ as t,o as a,c as n,O as o}from"./chunks/framework.58a9e095.js";const y=JSON.parse('{"title":"http接口服务","description":"","frontmatter":{},"headers":[],"relativePath":"guide/api/httpApi.md","filePath":"guide/api/httpApi.md","lastUpdated":1731396361000}'),p={name:"guide/api/httpApi.md"};function l(e,s,c,r,d,i){return a(),n("div",null,s[0]||(s[0]=[o(`

http接口服务

概要

YinTao 启动后默认占用本机8777端口,对外提供http服务。

执行

路径: /run

请求方式: POST

说明: 运行脚本时调用,运行报告随请求返回, 当填写remoteReport时,会立即返回空,执行结果会通过异步返回

参数:

名称类型默认值说明
scriptstring执行的脚本
storageany自定义参数仓库
headlessbooleanfasle无头模式,默认为显示界面运行,true开启无头运行
browserstring'chrome'执行使用的浏览器支持 chromefirefoxwebkit
hostsMaphost信息 {"域名":"解析IP地址"}
cookiesCookie[]可接收cookie数组,用于初始化配置
remoteReportobject远程执行需要上报的地址
audioAudio当需要录制视频时传递,默认不开启视频录制

remoteReport 类型:object:

名称类型默认值说明
resultstring远程上传结果地址
logstring远程上传日志地址
imagestring远程上传图片地址
tracestring远程上传追踪地址,支持本地路径以及http地址。问题追踪

Audio 类型:object:

名称类型默认值说明
urlstring视频存储地址,远程执行时只支持http远程上报地址
sizeObject调整录制时的分辨率
-widthObject录制的宽度
-heighttObject录制的高度

当开始录制时,不要关闭page,否则将丢失关闭页面的录制内容。

请求示例:

js
  request
     .post(
       "http://localhost:8777/run",
       {
diff --git a/assets/guide_api_instruct.md.c1427e4f.js b/assets/guide_api_instruct.md.25a9690d.js
similarity index 95%
rename from assets/guide_api_instruct.md.c1427e4f.js
rename to assets/guide_api_instruct.md.25a9690d.js
index 1454a95..77a783f 100644
--- a/assets/guide_api_instruct.md.c1427e4f.js
+++ b/assets/guide_api_instruct.md.25a9690d.js
@@ -1 +1 @@
-import{_ as a,o as t,c as o,O as c}from"./chunks/framework.58a9e095.js";const h=JSON.parse('{"title":"指令","description":"","frontmatter":{},"headers":[],"relativePath":"guide/api/instruct.md","filePath":"guide/api/instruct.md","lastUpdated":1730861693000}'),d={name:"guide/api/instruct.md"};function r(i,e,n,s,p,l){return t(),o("div",null,e[0]||(e[0]=[c('

指令

说明

YinTao 执行时主要通过解析指令代码执行, 这些内部指令在运行时以被预注册的js函数所替代,这意味着未知的指令无法得到正确的解析。

同时我们可以使用原生js进行逻辑编写。部分指令生效会有一些限制,这取决于不同页面之间的上下文差异,YinTao对这些工作进行了简化。

执行时只存在一套上下文,即当前控制的页面。多页面直接操作必须进行手动切换(不建议使用多页面)。

注意: execJavaScript执行环境仅为当前控制的浏览器页面,而原生的js将在node侧执行。

',6)]))}const m=a(d,[["render",r]]);export{h as __pageData,m as default}; +import{_ as a,o as t,c as o,O as c}from"./chunks/framework.58a9e095.js";const h=JSON.parse('{"title":"指令","description":"","frontmatter":{},"headers":[],"relativePath":"guide/api/instruct.md","filePath":"guide/api/instruct.md","lastUpdated":1731396361000}'),d={name:"guide/api/instruct.md"};function r(i,e,n,s,p,l){return t(),o("div",null,e[0]||(e[0]=[c('

指令

说明

YinTao 执行时主要通过解析指令代码执行, 这些内部指令在运行时以被预注册的js函数所替代,这意味着未知的指令无法得到正确的解析。

同时我们可以使用原生js进行逻辑编写。部分指令生效会有一些限制,这取决于不同页面之间的上下文差异,YinTao对这些工作进行了简化。

执行时只存在一套上下文,即当前控制的页面。多页面直接操作必须进行手动切换(不建议使用多页面)。

注意: execJavaScript执行环境仅为当前控制的浏览器页面,而原生的js将在node侧执行。

',6)]))}const m=a(d,[["render",r]]);export{h as __pageData,m as default}; diff --git a/assets/guide_api_instruct.md.c1427e4f.lean.js b/assets/guide_api_instruct.md.25a9690d.lean.js similarity index 95% rename from assets/guide_api_instruct.md.c1427e4f.lean.js rename to assets/guide_api_instruct.md.25a9690d.lean.js index 1454a95..77a783f 100644 --- a/assets/guide_api_instruct.md.c1427e4f.lean.js +++ b/assets/guide_api_instruct.md.25a9690d.lean.js @@ -1 +1 @@ -import{_ as a,o as t,c as o,O as c}from"./chunks/framework.58a9e095.js";const h=JSON.parse('{"title":"指令","description":"","frontmatter":{},"headers":[],"relativePath":"guide/api/instruct.md","filePath":"guide/api/instruct.md","lastUpdated":1730861693000}'),d={name:"guide/api/instruct.md"};function r(i,e,n,s,p,l){return t(),o("div",null,e[0]||(e[0]=[c('

指令

说明

YinTao 执行时主要通过解析指令代码执行, 这些内部指令在运行时以被预注册的js函数所替代,这意味着未知的指令无法得到正确的解析。

同时我们可以使用原生js进行逻辑编写。部分指令生效会有一些限制,这取决于不同页面之间的上下文差异,YinTao对这些工作进行了简化。

执行时只存在一套上下文,即当前控制的页面。多页面直接操作必须进行手动切换(不建议使用多页面)。

注意: execJavaScript执行环境仅为当前控制的浏览器页面,而原生的js将在node侧执行。

',6)]))}const m=a(d,[["render",r]]);export{h as __pageData,m as default}; +import{_ as a,o as t,c as o,O as c}from"./chunks/framework.58a9e095.js";const h=JSON.parse('{"title":"指令","description":"","frontmatter":{},"headers":[],"relativePath":"guide/api/instruct.md","filePath":"guide/api/instruct.md","lastUpdated":1731396361000}'),d={name:"guide/api/instruct.md"};function r(i,e,n,s,p,l){return t(),o("div",null,e[0]||(e[0]=[c('

指令

说明

YinTao 执行时主要通过解析指令代码执行, 这些内部指令在运行时以被预注册的js函数所替代,这意味着未知的指令无法得到正确的解析。

同时我们可以使用原生js进行逻辑编写。部分指令生效会有一些限制,这取决于不同页面之间的上下文差异,YinTao对这些工作进行了简化。

执行时只存在一套上下文,即当前控制的页面。多页面直接操作必须进行手动切换(不建议使用多页面)。

注意: execJavaScript执行环境仅为当前控制的浏览器页面,而原生的js将在node侧执行。

',6)]))}const m=a(d,[["render",r]]);export{h as __pageData,m as default}; diff --git a/assets/guide_api_pasteConfig.md.89c5ff24.js b/assets/guide_api_pasteConfig.md.9fcb331a.js similarity index 99% rename from assets/guide_api_pasteConfig.md.89c5ff24.js rename to assets/guide_api_pasteConfig.md.9fcb331a.js index abd2a8d..2f0db20 100644 --- a/assets/guide_api_pasteConfig.md.89c5ff24.js +++ b/assets/guide_api_pasteConfig.md.9fcb331a.js @@ -1,4 +1,4 @@ -import{_ as a,o as n,c as o,O as p}from"./chunks/framework.58a9e095.js";const u=JSON.parse('{"title":"粘贴板配置","description":"","frontmatter":{},"headers":[],"relativePath":"guide/api/pasteConfig.md","filePath":"guide/api/pasteConfig.md","lastUpdated":1730861693000}'),l={name:"guide/api/pasteConfig.md"};function e(t,s,c,r,i,d){return n(),o("div",null,s[0]||(s[0]=[p(`

粘贴板配置

介绍

YinTao 作为底层引擎,经常会在多个平台间使用,为了让用户能够更好的使用YinTao功能,以及兼容一些平台实现的差异。 我们提供了通用的粘贴板配置模式。

原理

在执行中或录制中,平台将传递一系列参数来控制具体执行的行为,现在我们允许用户去覆盖或扩充它 (注: 仅针对本地有效)

我们读取用户的粘贴板内容,转化为配置文件,并覆盖原始配置(仅针对修改项)。

让用户可以更加灵活的时候扩展功能。

示例

使用方式: 复制下列代码至粘贴板

自定义录制打开的浏览器

json
{
+import{_ as a,o as n,c as o,O as p}from"./chunks/framework.58a9e095.js";const u=JSON.parse('{"title":"粘贴板配置","description":"","frontmatter":{},"headers":[],"relativePath":"guide/api/pasteConfig.md","filePath":"guide/api/pasteConfig.md","lastUpdated":1731396361000}'),l={name:"guide/api/pasteConfig.md"};function e(t,s,c,r,i,d){return n(),o("div",null,s[0]||(s[0]=[p(`

粘贴板配置

介绍

YinTao 作为底层引擎,经常会在多个平台间使用,为了让用户能够更好的使用YinTao功能,以及兼容一些平台实现的差异。 我们提供了通用的粘贴板配置模式。

原理

在执行中或录制中,平台将传递一系列参数来控制具体执行的行为,现在我们允许用户去覆盖或扩充它 (注: 仅针对本地有效)

我们读取用户的粘贴板内容,转化为配置文件,并覆盖原始配置(仅针对修改项)。

让用户可以更加灵活的时候扩展功能。

示例

使用方式: 复制下列代码至粘贴板

自定义录制打开的浏览器

json
{
     "url": "https://jd.com"
 }
{
     "url": "https://jd.com"
diff --git a/assets/guide_api_pasteConfig.md.89c5ff24.lean.js b/assets/guide_api_pasteConfig.md.9fcb331a.lean.js
similarity index 99%
rename from assets/guide_api_pasteConfig.md.89c5ff24.lean.js
rename to assets/guide_api_pasteConfig.md.9fcb331a.lean.js
index abd2a8d..2f0db20 100644
--- a/assets/guide_api_pasteConfig.md.89c5ff24.lean.js
+++ b/assets/guide_api_pasteConfig.md.9fcb331a.lean.js
@@ -1,4 +1,4 @@
-import{_ as a,o as n,c as o,O as p}from"./chunks/framework.58a9e095.js";const u=JSON.parse('{"title":"粘贴板配置","description":"","frontmatter":{},"headers":[],"relativePath":"guide/api/pasteConfig.md","filePath":"guide/api/pasteConfig.md","lastUpdated":1730861693000}'),l={name:"guide/api/pasteConfig.md"};function e(t,s,c,r,i,d){return n(),o("div",null,s[0]||(s[0]=[p(`

粘贴板配置

介绍

YinTao 作为底层引擎,经常会在多个平台间使用,为了让用户能够更好的使用YinTao功能,以及兼容一些平台实现的差异。 我们提供了通用的粘贴板配置模式。

原理

在执行中或录制中,平台将传递一系列参数来控制具体执行的行为,现在我们允许用户去覆盖或扩充它 (注: 仅针对本地有效)

我们读取用户的粘贴板内容,转化为配置文件,并覆盖原始配置(仅针对修改项)。

让用户可以更加灵活的时候扩展功能。

示例

使用方式: 复制下列代码至粘贴板

自定义录制打开的浏览器

json
{
+import{_ as a,o as n,c as o,O as p}from"./chunks/framework.58a9e095.js";const u=JSON.parse('{"title":"粘贴板配置","description":"","frontmatter":{},"headers":[],"relativePath":"guide/api/pasteConfig.md","filePath":"guide/api/pasteConfig.md","lastUpdated":1731396361000}'),l={name:"guide/api/pasteConfig.md"};function e(t,s,c,r,i,d){return n(),o("div",null,s[0]||(s[0]=[p(`

粘贴板配置

介绍

YinTao 作为底层引擎,经常会在多个平台间使用,为了让用户能够更好的使用YinTao功能,以及兼容一些平台实现的差异。 我们提供了通用的粘贴板配置模式。

原理

在执行中或录制中,平台将传递一系列参数来控制具体执行的行为,现在我们允许用户去覆盖或扩充它 (注: 仅针对本地有效)

我们读取用户的粘贴板内容,转化为配置文件,并覆盖原始配置(仅针对修改项)。

让用户可以更加灵活的时候扩展功能。

示例

使用方式: 复制下列代码至粘贴板

自定义录制打开的浏览器

json
{
     "url": "https://jd.com"
 }
{
     "url": "https://jd.com"
diff --git a/assets/guide_api_wsApi.md.7608d83e.js b/assets/guide_api_wsApi.md.2af3c25e.js
similarity index 99%
rename from assets/guide_api_wsApi.md.7608d83e.js
rename to assets/guide_api_wsApi.md.2af3c25e.js
index f948aaf..7232427 100644
--- a/assets/guide_api_wsApi.md.7608d83e.js
+++ b/assets/guide_api_wsApi.md.2af3c25e.js
@@ -1,4 +1,4 @@
-import{_ as a,o as n,c as o,O as p}from"./chunks/framework.58a9e095.js";const u=JSON.parse('{"title":"websockt服务","description":"","frontmatter":{},"headers":[],"relativePath":"guide/api/wsApi.md","filePath":"guide/api/wsApi.md","lastUpdated":1730861693000}'),l={name:"guide/api/wsApi.md"};function t(e,s,c,r,E,y){return n(),o("div",null,s[0]||(s[0]=[p(`

websockt服务

概要

YinTao 启动后默认占用本机8888端口,对外提供websocket服务。

它更适合在网页端使用避免触发CORS

通用数据协议

http不同Websocket采用数据协议进行交互。

这意味着我们需要提供符合规范的数据才能被正确解析。

YinTao内部采用json结构传递数据。

例:

json
{
+import{_ as a,o as n,c as o,O as p}from"./chunks/framework.58a9e095.js";const u=JSON.parse('{"title":"websockt服务","description":"","frontmatter":{},"headers":[],"relativePath":"guide/api/wsApi.md","filePath":"guide/api/wsApi.md","lastUpdated":1731396361000}'),l={name:"guide/api/wsApi.md"};function t(e,s,c,r,E,y){return n(),o("div",null,s[0]||(s[0]=[p(`

websockt服务

概要

YinTao 启动后默认占用本机8888端口,对外提供websocket服务。

它更适合在网页端使用避免触发CORS

通用数据协议

http不同Websocket采用数据协议进行交互。

这意味着我们需要提供符合规范的数据才能被正确解析。

YinTao内部采用json结构传递数据。

例:

json
{
   "api": "run",
   "config": {
     "script":"page.to('https://baidu.com')",
diff --git a/assets/guide_api_wsApi.md.7608d83e.lean.js b/assets/guide_api_wsApi.md.2af3c25e.lean.js
similarity index 99%
rename from assets/guide_api_wsApi.md.7608d83e.lean.js
rename to assets/guide_api_wsApi.md.2af3c25e.lean.js
index f948aaf..7232427 100644
--- a/assets/guide_api_wsApi.md.7608d83e.lean.js
+++ b/assets/guide_api_wsApi.md.2af3c25e.lean.js
@@ -1,4 +1,4 @@
-import{_ as a,o as n,c as o,O as p}from"./chunks/framework.58a9e095.js";const u=JSON.parse('{"title":"websockt服务","description":"","frontmatter":{},"headers":[],"relativePath":"guide/api/wsApi.md","filePath":"guide/api/wsApi.md","lastUpdated":1730861693000}'),l={name:"guide/api/wsApi.md"};function t(e,s,c,r,E,y){return n(),o("div",null,s[0]||(s[0]=[p(`

websockt服务

概要

YinTao 启动后默认占用本机8888端口,对外提供websocket服务。

它更适合在网页端使用避免触发CORS

通用数据协议

http不同Websocket采用数据协议进行交互。

这意味着我们需要提供符合规范的数据才能被正确解析。

YinTao内部采用json结构传递数据。

例:

json
{
+import{_ as a,o as n,c as o,O as p}from"./chunks/framework.58a9e095.js";const u=JSON.parse('{"title":"websockt服务","description":"","frontmatter":{},"headers":[],"relativePath":"guide/api/wsApi.md","filePath":"guide/api/wsApi.md","lastUpdated":1731396361000}'),l={name:"guide/api/wsApi.md"};function t(e,s,c,r,E,y){return n(),o("div",null,s[0]||(s[0]=[p(`

websockt服务

概要

YinTao 启动后默认占用本机8888端口,对外提供websocket服务。

它更适合在网页端使用避免触发CORS

通用数据协议

http不同Websocket采用数据协议进行交互。

这意味着我们需要提供符合规范的数据才能被正确解析。

YinTao内部采用json结构传递数据。

例:

json
{
   "api": "run",
   "config": {
     "script":"page.to('https://baidu.com')",
diff --git a/assets/guide_course_step.md.a47386be.js b/assets/guide_course_step.md.6945c8cc.js
similarity index 97%
rename from assets/guide_course_step.md.a47386be.js
rename to assets/guide_course_step.md.6945c8cc.js
index 10c645f..ead3258 100644
--- a/assets/guide_course_step.md.a47386be.js
+++ b/assets/guide_course_step.md.6945c8cc.js
@@ -1 +1 @@
-import{_ as a,o as t,c as o,O as i}from"./chunks/framework.58a9e095.js";const r="/assets/mac_prb.e0261e25.png",s="/assets/mac_prb1.5a32823e.png",l="/assets/mac_prb2.26b327b4.png",_=JSON.parse('{"title":"安装说明","description":"","frontmatter":{},"headers":[],"relativePath":"guide/course/step.md","filePath":"guide/course/step.md","lastUpdated":1730861693000}'),c={name:"guide/course/step.md"};function n(d,e,p,h,u,m){return t(),o("div",null,e[0]||(e[0]=[i('

安装说明

Windows安装

跳转至下载页面,点击WIN下载按钮,等待下载完成后,逐一点击下一步直至安装完成。

Mac安装

跳转至下载页面,点击MAC下载按钮,等待下载完成后,拖动YinTao-drive.app进Applications即可。

安装成功校验

  • 打开桌面YinTao应用,然后打开浏览器,地址栏输入:http://localhost:8777/ping
  • 返回{"ok":1}即代表安装成功

安装问题说明

  • 无法打开软件,如上图,请在系统偏好设置->安全性与隐私页面,勾选任何来源,见下图。

  • 如上图设置页面,没有任何来源选项,请打开终端(启动器->其他->终端)
  • 输入sudo spctl --master-disable
  • 根据提示输入电脑开机密码,再次打开软件,弹窗点击打开即可

使用过程中如果你有任何的意见或者问题,欢迎反馈

',14)]))}const b=a(c,[["render",n]]);export{_ as __pageData,b as default}; +import{_ as a,o as t,c as o,O as i}from"./chunks/framework.58a9e095.js";const r="/assets/mac_prb.e0261e25.png",s="/assets/mac_prb1.5a32823e.png",l="/assets/mac_prb2.26b327b4.png",_=JSON.parse('{"title":"安装说明","description":"","frontmatter":{},"headers":[],"relativePath":"guide/course/step.md","filePath":"guide/course/step.md","lastUpdated":1731396361000}'),c={name:"guide/course/step.md"};function n(d,e,p,h,u,m){return t(),o("div",null,e[0]||(e[0]=[i('

安装说明

Windows安装

跳转至下载页面,点击WIN下载按钮,等待下载完成后,逐一点击下一步直至安装完成。

Mac安装

跳转至下载页面,点击MAC下载按钮,等待下载完成后,拖动YinTao-drive.app进Applications即可。

安装成功校验

  • 打开桌面YinTao应用,然后打开浏览器,地址栏输入:http://localhost:8777/ping
  • 返回{"ok":1}即代表安装成功

安装问题说明

  • 无法打开软件,如上图,请在系统偏好设置->安全性与隐私页面,勾选任何来源,见下图。

  • 如上图设置页面,没有任何来源选项,请打开终端(启动器->其他->终端)
  • 输入sudo spctl --master-disable
  • 根据提示输入电脑开机密码,再次打开软件,弹窗点击打开即可

使用过程中如果你有任何的意见或者问题,欢迎反馈

',14)]))}const b=a(c,[["render",n]]);export{_ as __pageData,b as default}; diff --git a/assets/guide_course_step.md.a47386be.lean.js b/assets/guide_course_step.md.6945c8cc.lean.js similarity index 97% rename from assets/guide_course_step.md.a47386be.lean.js rename to assets/guide_course_step.md.6945c8cc.lean.js index 10c645f..ead3258 100644 --- a/assets/guide_course_step.md.a47386be.lean.js +++ b/assets/guide_course_step.md.6945c8cc.lean.js @@ -1 +1 @@ -import{_ as a,o as t,c as o,O as i}from"./chunks/framework.58a9e095.js";const r="/assets/mac_prb.e0261e25.png",s="/assets/mac_prb1.5a32823e.png",l="/assets/mac_prb2.26b327b4.png",_=JSON.parse('{"title":"安装说明","description":"","frontmatter":{},"headers":[],"relativePath":"guide/course/step.md","filePath":"guide/course/step.md","lastUpdated":1730861693000}'),c={name:"guide/course/step.md"};function n(d,e,p,h,u,m){return t(),o("div",null,e[0]||(e[0]=[i('

安装说明

Windows安装

跳转至下载页面,点击WIN下载按钮,等待下载完成后,逐一点击下一步直至安装完成。

Mac安装

跳转至下载页面,点击MAC下载按钮,等待下载完成后,拖动YinTao-drive.app进Applications即可。

安装成功校验

  • 打开桌面YinTao应用,然后打开浏览器,地址栏输入:http://localhost:8777/ping
  • 返回{"ok":1}即代表安装成功

安装问题说明

  • 无法打开软件,如上图,请在系统偏好设置->安全性与隐私页面,勾选任何来源,见下图。

  • 如上图设置页面,没有任何来源选项,请打开终端(启动器->其他->终端)
  • 输入sudo spctl --master-disable
  • 根据提示输入电脑开机密码,再次打开软件,弹窗点击打开即可

使用过程中如果你有任何的意见或者问题,欢迎反馈

',14)]))}const b=a(c,[["render",n]]);export{_ as __pageData,b as default}; +import{_ as a,o as t,c as o,O as i}from"./chunks/framework.58a9e095.js";const r="/assets/mac_prb.e0261e25.png",s="/assets/mac_prb1.5a32823e.png",l="/assets/mac_prb2.26b327b4.png",_=JSON.parse('{"title":"安装说明","description":"","frontmatter":{},"headers":[],"relativePath":"guide/course/step.md","filePath":"guide/course/step.md","lastUpdated":1731396361000}'),c={name:"guide/course/step.md"};function n(d,e,p,h,u,m){return t(),o("div",null,e[0]||(e[0]=[i('

安装说明

Windows安装

跳转至下载页面,点击WIN下载按钮,等待下载完成后,逐一点击下一步直至安装完成。

Mac安装

跳转至下载页面,点击MAC下载按钮,等待下载完成后,拖动YinTao-drive.app进Applications即可。

安装成功校验

  • 打开桌面YinTao应用,然后打开浏览器,地址栏输入:http://localhost:8777/ping
  • 返回{"ok":1}即代表安装成功

安装问题说明

  • 无法打开软件,如上图,请在系统偏好设置->安全性与隐私页面,勾选任何来源,见下图。

  • 如上图设置页面,没有任何来源选项,请打开终端(启动器->其他->终端)
  • 输入sudo spctl --master-disable
  • 根据提示输入电脑开机密码,再次打开软件,弹窗点击打开即可

使用过程中如果你有任何的意见或者问题,欢迎反馈

',14)]))}const b=a(c,[["render",n]]);export{_ as __pageData,b as default}; diff --git a/assets/guide_course_trace.md.af922a17.js b/assets/guide_course_trace.md.7506394b.js similarity index 99% rename from assets/guide_course_trace.md.af922a17.js rename to assets/guide_course_trace.md.7506394b.js index 2c06152..ede7bf4 100644 --- a/assets/guide_course_trace.md.af922a17.js +++ b/assets/guide_course_trace.md.7506394b.js @@ -1,4 +1,4 @@ -import{_ as a,o as n,c as p,O as o}from"./chunks/framework.58a9e095.js";const d=JSON.parse('{"title":"问题追踪","description":"","frontmatter":{},"headers":[],"relativePath":"guide/course/trace.md","filePath":"guide/course/trace.md","lastUpdated":1730861693000}'),l={name:"guide/course/trace.md"};function e(t,s,r,c,y,E){return n(),p("div",null,s[0]||(s[0]=[o(`

问题追踪

YinTao: version-1.1.5版本开始,引擎内提供了执行问题追踪功能。使用追踪功能可以大幅提高远程执行问题调试的时间,可帮助您在脚本运行后探索执行的记录。 并提供本地或在线预览的能力。

使用跟踪

使用跟踪的方法为,在调用执行接口时,向执行参数remoteReport中追加 trace 地址 trace可以传递 url,或本地路径(非本地执行只能传递http地址)

本地追踪

例:

js
{
+import{_ as a,o as n,c as p,O as o}from"./chunks/framework.58a9e095.js";const d=JSON.parse('{"title":"问题追踪","description":"","frontmatter":{},"headers":[],"relativePath":"guide/course/trace.md","filePath":"guide/course/trace.md","lastUpdated":1731396361000}'),l={name:"guide/course/trace.md"};function e(t,s,r,c,y,E){return n(),p("div",null,s[0]||(s[0]=[o(`

问题追踪

YinTao: version-1.1.5版本开始,引擎内提供了执行问题追踪功能。使用追踪功能可以大幅提高远程执行问题调试的时间,可帮助您在脚本运行后探索执行的记录。 并提供本地或在线预览的能力。

使用跟踪

使用跟踪的方法为,在调用执行接口时,向执行参数remoteReport中追加 trace 地址 trace可以传递 url,或本地路径(非本地执行只能传递http地址)

本地追踪

例:

js
{
    "remoteReport": {
         "trace": "/Users/zhouyuan11/work/test/trace.zip"  // 本地路径需要以zip结尾
     },
diff --git a/assets/guide_course_trace.md.af922a17.lean.js b/assets/guide_course_trace.md.7506394b.lean.js
similarity index 99%
rename from assets/guide_course_trace.md.af922a17.lean.js
rename to assets/guide_course_trace.md.7506394b.lean.js
index 2c06152..ede7bf4 100644
--- a/assets/guide_course_trace.md.af922a17.lean.js
+++ b/assets/guide_course_trace.md.7506394b.lean.js
@@ -1,4 +1,4 @@
-import{_ as a,o as n,c as p,O as o}from"./chunks/framework.58a9e095.js";const d=JSON.parse('{"title":"问题追踪","description":"","frontmatter":{},"headers":[],"relativePath":"guide/course/trace.md","filePath":"guide/course/trace.md","lastUpdated":1730861693000}'),l={name:"guide/course/trace.md"};function e(t,s,r,c,y,E){return n(),p("div",null,s[0]||(s[0]=[o(`

问题追踪

YinTao: version-1.1.5版本开始,引擎内提供了执行问题追踪功能。使用追踪功能可以大幅提高远程执行问题调试的时间,可帮助您在脚本运行后探索执行的记录。 并提供本地或在线预览的能力。

使用跟踪

使用跟踪的方法为,在调用执行接口时,向执行参数remoteReport中追加 trace 地址 trace可以传递 url,或本地路径(非本地执行只能传递http地址)

本地追踪

例:

js
{
+import{_ as a,o as n,c as p,O as o}from"./chunks/framework.58a9e095.js";const d=JSON.parse('{"title":"问题追踪","description":"","frontmatter":{},"headers":[],"relativePath":"guide/course/trace.md","filePath":"guide/course/trace.md","lastUpdated":1731396361000}'),l={name:"guide/course/trace.md"};function e(t,s,r,c,y,E){return n(),p("div",null,s[0]||(s[0]=[o(`

问题追踪

YinTao: version-1.1.5版本开始,引擎内提供了执行问题追踪功能。使用追踪功能可以大幅提高远程执行问题调试的时间,可帮助您在脚本运行后探索执行的记录。 并提供本地或在线预览的能力。

使用跟踪

使用跟踪的方法为,在调用执行接口时,向执行参数remoteReport中追加 trace 地址 trace可以传递 url,或本地路径(非本地执行只能传递http地址)

本地追踪

例:

js
{
    "remoteReport": {
         "trace": "/Users/zhouyuan11/work/test/trace.zip"  // 本地路径需要以zip结尾
     },
diff --git a/assets/guide_course_use.md.ba400759.js b/assets/guide_course_use.md.fcbd62a3.js
similarity index 98%
rename from assets/guide_course_use.md.ba400759.js
rename to assets/guide_course_use.md.fcbd62a3.js
index 8ab9af4..d56005b 100644
--- a/assets/guide_course_use.md.ba400759.js
+++ b/assets/guide_course_use.md.fcbd62a3.js
@@ -1,4 +1,4 @@
-import{_ as a,o as n,c as o,O as t}from"./chunks/framework.58a9e095.js";const e="/assets/postman_live.ff389554.png",l="/assets/postman_run.d885d64e.png",y=JSON.parse('{"title":"使用说明","description":"","frontmatter":{},"headers":[],"relativePath":"guide/course/use.md","filePath":"guide/course/use.md","lastUpdated":1730861693000}'),p={name:"guide/course/use.md"};function c(r,s,i,u,d,E){return n(),o("div",null,s[0]||(s[0]=[t(`

使用说明

Postman

录制脚本

  • 打开postman,创建post请求,地址栏输入:http://localhost:8777/live
  • Body选择raw,格式选择JSON,内容输入如下
js
{
+import{_ as a,o as n,c as o,O as t}from"./chunks/framework.58a9e095.js";const e="/assets/postman_live.ff389554.png",l="/assets/postman_run.d885d64e.png",y=JSON.parse('{"title":"使用说明","description":"","frontmatter":{},"headers":[],"relativePath":"guide/course/use.md","filePath":"guide/course/use.md","lastUpdated":1731396361000}'),p={name:"guide/course/use.md"};function c(r,s,i,u,d,E){return n(),o("div",null,s[0]||(s[0]=[t(`

使用说明

Postman

录制脚本

  • 打开postman,创建post请求,地址栏输入:http://localhost:8777/live
  • Body选择raw,格式选择JSON,内容输入如下
js
{
   "url": "https://element.eleme.cn/#/zh-CN/component/cascader",
   "storage": {
     "id":123
diff --git a/assets/guide_course_use.md.ba400759.lean.js b/assets/guide_course_use.md.fcbd62a3.lean.js
similarity index 98%
rename from assets/guide_course_use.md.ba400759.lean.js
rename to assets/guide_course_use.md.fcbd62a3.lean.js
index 8ab9af4..d56005b 100644
--- a/assets/guide_course_use.md.ba400759.lean.js
+++ b/assets/guide_course_use.md.fcbd62a3.lean.js
@@ -1,4 +1,4 @@
-import{_ as a,o as n,c as o,O as t}from"./chunks/framework.58a9e095.js";const e="/assets/postman_live.ff389554.png",l="/assets/postman_run.d885d64e.png",y=JSON.parse('{"title":"使用说明","description":"","frontmatter":{},"headers":[],"relativePath":"guide/course/use.md","filePath":"guide/course/use.md","lastUpdated":1730861693000}'),p={name:"guide/course/use.md"};function c(r,s,i,u,d,E){return n(),o("div",null,s[0]||(s[0]=[t(`

使用说明

Postman

录制脚本

  • 打开postman,创建post请求,地址栏输入:http://localhost:8777/live
  • Body选择raw,格式选择JSON,内容输入如下
js
{
+import{_ as a,o as n,c as o,O as t}from"./chunks/framework.58a9e095.js";const e="/assets/postman_live.ff389554.png",l="/assets/postman_run.d885d64e.png",y=JSON.parse('{"title":"使用说明","description":"","frontmatter":{},"headers":[],"relativePath":"guide/course/use.md","filePath":"guide/course/use.md","lastUpdated":1731396361000}'),p={name:"guide/course/use.md"};function c(r,s,i,u,d,E){return n(),o("div",null,s[0]||(s[0]=[t(`

使用说明

Postman

录制脚本

  • 打开postman,创建post请求,地址栏输入:http://localhost:8777/live
  • Body选择raw,格式选择JSON,内容输入如下
js
{
   "url": "https://element.eleme.cn/#/zh-CN/component/cascader",
   "storage": {
     "id":123
diff --git a/assets/guide_data_cookie.md.fb3a3749.js b/assets/guide_data_cookie.md.14e51f6b.js
similarity index 96%
rename from assets/guide_data_cookie.md.fb3a3749.js
rename to assets/guide_data_cookie.md.14e51f6b.js
index 22e4695..3e48ab7 100644
--- a/assets/guide_data_cookie.md.fb3a3749.js
+++ b/assets/guide_data_cookie.md.14e51f6b.js
@@ -1 +1 @@
-import{_ as e,o as i,c,O as t}from"./chunks/framework.58a9e095.js";const u=JSON.parse('{"title":"Cookie object","description":"","frontmatter":{},"headers":[],"relativePath":"guide/data/cookie.md","filePath":"guide/data/cookie.md","lastUpdated":1730861693000}'),a={name:"guide/data/cookie.md"};function l(d,o,n,r,s,k){return i(),c("div",null,o[0]||(o[0]=[t('

Cookie object

录制时cookie必须额外传递url: string 标明录制地址。

  • name : string - cookie 的名称。
  • value: string - cookie 的值。
  • domain: string(optional)- cookie 的域;这将使用前面的点进行标准化,以便它对子域也有效。
  • hostOnly: boolean(optional) - cookie 是否是 host-only cookie;true只有在没有通过域的情况下才会出现这种情况。
  • path: string(optional)- cookie 的路径。
  • secure: boolean(optional) - cookie 是否被标记为安全。
  • httpOnly布尔值(optional)- cookie 是否仅标记为 HTTP。
  • session: boolean(optional) - cookie 是会话 cookie 还是具有到期日期的持久 cookie。
  • expirationDate Double(optional)- cookie 的到期日期,即自 UNIX 纪元以来的秒数。不为会话 cookie 提供。
  • sameSite: string(optional) -应用于此 cookie的相同站点策略。可以是unspecified、no_restriction或laxstrict。
',3)]))}const m=e(a,[["render",l]]);export{u as __pageData,m as default}; +import{_ as e,o as i,c,O as t}from"./chunks/framework.58a9e095.js";const u=JSON.parse('{"title":"Cookie object","description":"","frontmatter":{},"headers":[],"relativePath":"guide/data/cookie.md","filePath":"guide/data/cookie.md","lastUpdated":1731396361000}'),a={name:"guide/data/cookie.md"};function l(d,o,n,r,s,k){return i(),c("div",null,o[0]||(o[0]=[t('

Cookie object

录制时cookie必须额外传递url: string 标明录制地址。

  • name : string - cookie 的名称。
  • value: string - cookie 的值。
  • domain: string(optional)- cookie 的域;这将使用前面的点进行标准化,以便它对子域也有效。
  • hostOnly: boolean(optional) - cookie 是否是 host-only cookie;true只有在没有通过域的情况下才会出现这种情况。
  • path: string(optional)- cookie 的路径。
  • secure: boolean(optional) - cookie 是否被标记为安全。
  • httpOnly布尔值(optional)- cookie 是否仅标记为 HTTP。
  • session: boolean(optional) - cookie 是会话 cookie 还是具有到期日期的持久 cookie。
  • expirationDate Double(optional)- cookie 的到期日期,即自 UNIX 纪元以来的秒数。不为会话 cookie 提供。
  • sameSite: string(optional) -应用于此 cookie的相同站点策略。可以是unspecified、no_restriction或laxstrict。
',3)]))}const m=e(a,[["render",l]]);export{u as __pageData,m as default}; diff --git a/assets/guide_data_cookie.md.fb3a3749.lean.js b/assets/guide_data_cookie.md.14e51f6b.lean.js similarity index 96% rename from assets/guide_data_cookie.md.fb3a3749.lean.js rename to assets/guide_data_cookie.md.14e51f6b.lean.js index 22e4695..3e48ab7 100644 --- a/assets/guide_data_cookie.md.fb3a3749.lean.js +++ b/assets/guide_data_cookie.md.14e51f6b.lean.js @@ -1 +1 @@ -import{_ as e,o as i,c,O as t}from"./chunks/framework.58a9e095.js";const u=JSON.parse('{"title":"Cookie object","description":"","frontmatter":{},"headers":[],"relativePath":"guide/data/cookie.md","filePath":"guide/data/cookie.md","lastUpdated":1730861693000}'),a={name:"guide/data/cookie.md"};function l(d,o,n,r,s,k){return i(),c("div",null,o[0]||(o[0]=[t('

Cookie object

录制时cookie必须额外传递url: string 标明录制地址。

  • name : string - cookie 的名称。
  • value: string - cookie 的值。
  • domain: string(optional)- cookie 的域;这将使用前面的点进行标准化,以便它对子域也有效。
  • hostOnly: boolean(optional) - cookie 是否是 host-only cookie;true只有在没有通过域的情况下才会出现这种情况。
  • path: string(optional)- cookie 的路径。
  • secure: boolean(optional) - cookie 是否被标记为安全。
  • httpOnly布尔值(optional)- cookie 是否仅标记为 HTTP。
  • session: boolean(optional) - cookie 是会话 cookie 还是具有到期日期的持久 cookie。
  • expirationDate Double(optional)- cookie 的到期日期,即自 UNIX 纪元以来的秒数。不为会话 cookie 提供。
  • sameSite: string(optional) -应用于此 cookie的相同站点策略。可以是unspecified、no_restriction或laxstrict。
',3)]))}const m=e(a,[["render",l]]);export{u as __pageData,m as default}; +import{_ as e,o as i,c,O as t}from"./chunks/framework.58a9e095.js";const u=JSON.parse('{"title":"Cookie object","description":"","frontmatter":{},"headers":[],"relativePath":"guide/data/cookie.md","filePath":"guide/data/cookie.md","lastUpdated":1731396361000}'),a={name:"guide/data/cookie.md"};function l(d,o,n,r,s,k){return i(),c("div",null,o[0]||(o[0]=[t('

Cookie object

录制时cookie必须额外传递url: string 标明录制地址。

  • name : string - cookie 的名称。
  • value: string - cookie 的值。
  • domain: string(optional)- cookie 的域;这将使用前面的点进行标准化,以便它对子域也有效。
  • hostOnly: boolean(optional) - cookie 是否是 host-only cookie;true只有在没有通过域的情况下才会出现这种情况。
  • path: string(optional)- cookie 的路径。
  • secure: boolean(optional) - cookie 是否被标记为安全。
  • httpOnly布尔值(optional)- cookie 是否仅标记为 HTTP。
  • session: boolean(optional) - cookie 是会话 cookie 还是具有到期日期的持久 cookie。
  • expirationDate Double(optional)- cookie 的到期日期,即自 UNIX 纪元以来的秒数。不为会话 cookie 提供。
  • sameSite: string(optional) -应用于此 cookie的相同站点策略。可以是unspecified、no_restriction或laxstrict。
',3)]))}const m=e(a,[["render",l]]);export{u as __pageData,m as default}; diff --git a/assets/guide_data_errorCode.md.451fc8f9.js b/assets/guide_data_errorCode.md.1ebe6f29.js similarity index 91% rename from assets/guide_data_errorCode.md.451fc8f9.js rename to assets/guide_data_errorCode.md.1ebe6f29.js index 6da7f7d..6f739b1 100644 --- a/assets/guide_data_errorCode.md.451fc8f9.js +++ b/assets/guide_data_errorCode.md.1ebe6f29.js @@ -1 +1 @@ -import{_ as d,o as e,c as a,O as r}from"./chunks/framework.58a9e095.js";const u=JSON.parse('{"title":"错误码","description":"","frontmatter":{},"headers":[],"relativePath":"guide/data/errorCode.md","filePath":"guide/data/errorCode.md","lastUpdated":1730861693000}'),o={name:"guide/data/errorCode.md"};function h(s,t,i,l,c,n){return e(),a("div",null,t[0]||(t[0]=[r('

错误码

定义规范

我们理想提供通俗易通的错误码管理,在http error code 补充一位并丰富内容。

前缀含义示例
^1提示信息1000
^2成功信息2000
^3警告信息3002
^4错误信息4004

错误码列表

code描述
1001录制操作被取消
2000通用success
4025代码编译错误
',6)]))}const b=d(o,[["render",h]]);export{u as __pageData,b as default}; +import{_ as d,o as e,c as a,O as r}from"./chunks/framework.58a9e095.js";const u=JSON.parse('{"title":"错误码","description":"","frontmatter":{},"headers":[],"relativePath":"guide/data/errorCode.md","filePath":"guide/data/errorCode.md","lastUpdated":1731396361000}'),o={name:"guide/data/errorCode.md"};function h(s,t,i,l,c,n){return e(),a("div",null,t[0]||(t[0]=[r('

错误码

定义规范

我们理想提供通俗易通的错误码管理,在http error code 补充一位并丰富内容。

前缀含义示例
^1提示信息1000
^2成功信息2000
^3警告信息3002
^4错误信息4004

错误码列表

code描述
1001录制操作被取消
2000通用success
4025代码编译错误
',6)]))}const b=d(o,[["render",h]]);export{u as __pageData,b as default}; diff --git a/assets/guide_data_errorCode.md.451fc8f9.lean.js b/assets/guide_data_errorCode.md.1ebe6f29.lean.js similarity index 91% rename from assets/guide_data_errorCode.md.451fc8f9.lean.js rename to assets/guide_data_errorCode.md.1ebe6f29.lean.js index 6da7f7d..6f739b1 100644 --- a/assets/guide_data_errorCode.md.451fc8f9.lean.js +++ b/assets/guide_data_errorCode.md.1ebe6f29.lean.js @@ -1 +1 @@ -import{_ as d,o as e,c as a,O as r}from"./chunks/framework.58a9e095.js";const u=JSON.parse('{"title":"错误码","description":"","frontmatter":{},"headers":[],"relativePath":"guide/data/errorCode.md","filePath":"guide/data/errorCode.md","lastUpdated":1730861693000}'),o={name:"guide/data/errorCode.md"};function h(s,t,i,l,c,n){return e(),a("div",null,t[0]||(t[0]=[r('

错误码

定义规范

我们理想提供通俗易通的错误码管理,在http error code 补充一位并丰富内容。

前缀含义示例
^1提示信息1000
^2成功信息2000
^3警告信息3002
^4错误信息4004

错误码列表

code描述
1001录制操作被取消
2000通用success
4025代码编译错误
',6)]))}const b=d(o,[["render",h]]);export{u as __pageData,b as default}; +import{_ as d,o as e,c as a,O as r}from"./chunks/framework.58a9e095.js";const u=JSON.parse('{"title":"错误码","description":"","frontmatter":{},"headers":[],"relativePath":"guide/data/errorCode.md","filePath":"guide/data/errorCode.md","lastUpdated":1731396361000}'),o={name:"guide/data/errorCode.md"};function h(s,t,i,l,c,n){return e(),a("div",null,t[0]||(t[0]=[r('

错误码

定义规范

我们理想提供通俗易通的错误码管理,在http error code 补充一位并丰富内容。

前缀含义示例
^1提示信息1000
^2成功信息2000
^3警告信息3002
^4错误信息4004

错误码列表

code描述
1001录制操作被取消
2000通用success
4025代码编译错误
',6)]))}const b=d(o,[["render",h]]);export{u as __pageData,b as default}; diff --git a/assets/guide_data_keyCode.md.30c939bf.js b/assets/guide_data_keyCode.md.fdc92244.js similarity index 99% rename from assets/guide_data_keyCode.md.30c939bf.js rename to assets/guide_data_keyCode.md.fdc92244.js index be3b57b..19fdf50 100644 --- a/assets/guide_data_keyCode.md.30c939bf.js +++ b/assets/guide_data_keyCode.md.fdc92244.js @@ -1,4 +1,4 @@ -import{_ as a,o as n,c as l,O as p}from"./chunks/framework.58a9e095.js";const C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/data/keyCode.md","filePath":"guide/data/keyCode.md","lastUpdated":1730861693000}'),o={name:"guide/data/keyCode.md"};function e(t,s,c,r,y,E){return n(),l("div",null,s[0]||(s[0]=[p(`

keyCode

键盘信息 YinTao驱动支持模拟键盘操作,支持的操作如下:

js
  | '0'| '1'| '2'| '3'| '4'| '5'| '6'| '7'| '8'| '9'
+import{_ as a,o as n,c as l,O as p}from"./chunks/framework.58a9e095.js";const C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/data/keyCode.md","filePath":"guide/data/keyCode.md","lastUpdated":1731396361000}'),o={name:"guide/data/keyCode.md"};function e(t,s,c,r,y,E){return n(),l("div",null,s[0]||(s[0]=[p(`

keyCode

键盘信息 YinTao驱动支持模拟键盘操作,支持的操作如下:

js
  | '0'| '1'| '2'| '3'| '4'| '5'| '6'| '7'| '8'| '9'
   | 'Power'| 'Eject'| 'Abort'| 'Help'| 'Backspace'| 'Tab'| 'Numpad5'| 'NumpadEnter'
   | 'Enter'| 'ShiftLeft'| 'ShiftRight'| 'ControlLeft'| 'ControlRight'| 'AltLeft'
   | 'AltRight'| 'Pause'| 'CapsLock'| 'Escape'| 'Convert'| 'NonConvert'| 'Space'
diff --git a/assets/guide_data_keyCode.md.30c939bf.lean.js b/assets/guide_data_keyCode.md.fdc92244.lean.js
similarity index 99%
rename from assets/guide_data_keyCode.md.30c939bf.lean.js
rename to assets/guide_data_keyCode.md.fdc92244.lean.js
index be3b57b..19fdf50 100644
--- a/assets/guide_data_keyCode.md.30c939bf.lean.js
+++ b/assets/guide_data_keyCode.md.fdc92244.lean.js
@@ -1,4 +1,4 @@
-import{_ as a,o as n,c as l,O as p}from"./chunks/framework.58a9e095.js";const C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/data/keyCode.md","filePath":"guide/data/keyCode.md","lastUpdated":1730861693000}'),o={name:"guide/data/keyCode.md"};function e(t,s,c,r,y,E){return n(),l("div",null,s[0]||(s[0]=[p(`

keyCode

键盘信息 YinTao驱动支持模拟键盘操作,支持的操作如下:

js
  | '0'| '1'| '2'| '3'| '4'| '5'| '6'| '7'| '8'| '9'
+import{_ as a,o as n,c as l,O as p}from"./chunks/framework.58a9e095.js";const C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/data/keyCode.md","filePath":"guide/data/keyCode.md","lastUpdated":1731396361000}'),o={name:"guide/data/keyCode.md"};function e(t,s,c,r,y,E){return n(),l("div",null,s[0]||(s[0]=[p(`

keyCode

键盘信息 YinTao驱动支持模拟键盘操作,支持的操作如下:

js
  | '0'| '1'| '2'| '3'| '4'| '5'| '6'| '7'| '8'| '9'
   | 'Power'| 'Eject'| 'Abort'| 'Help'| 'Backspace'| 'Tab'| 'Numpad5'| 'NumpadEnter'
   | 'Enter'| 'ShiftLeft'| 'ShiftRight'| 'ControlLeft'| 'ControlRight'| 'AltLeft'
   | 'AltRight'| 'Pause'| 'CapsLock'| 'Escape'| 'Convert'| 'NonConvert'| 'Space'
diff --git a/assets/guide_ex_ex1.md.b7a747e6.js b/assets/guide_ex_ex1.md.8b03ad5c.js
similarity index 95%
rename from assets/guide_ex_ex1.md.b7a747e6.js
rename to assets/guide_ex_ex1.md.8b03ad5c.js
index 4c7bfb7..cd2c43a 100644
--- a/assets/guide_ex_ex1.md.b7a747e6.js
+++ b/assets/guide_ex_ex1.md.8b03ad5c.js
@@ -1 +1 @@
-import{_ as a,o as t,c as i,O as l}from"./chunks/framework.58a9e095.js";const m=JSON.parse('{"title":"实现原理","description":"","frontmatter":{},"headers":[],"relativePath":"guide/ex/ex1.md","filePath":"guide/ex/ex1.md","lastUpdated":1730861693000}'),r={name:"guide/ex/ex1.md"};function o(s,e,d,n,c,u){return t(),i("div",null,e[0]||(e[0]=[l('

实现原理

录制原理

  • 通过webview加载目标页面,向目标页面注入js,获取控制权。
  • 通过js监听用户的行为及操作,将监听的行为转换为匹配的语法。
  • 将录制生成的语法进行存储生成脚本文件。

脚本执行原理

  • 读取传输的脚本文件。
  • 新建一个浏览器进程并通过js解析语法转为指令,将指令分层级通过进行ipc进行传输,层级按照 浏览器>页面> iframe。
  • 具体页面拿到响应的指令,再将指令转换为具体的js脚本执行,并记录执行数据。
  • 运行完成后,将执行数据结果返回。
',5)]))}const p=a(r,[["render",o]]);export{m as __pageData,p as default}; +import{_ as a,o as t,c as i,O as l}from"./chunks/framework.58a9e095.js";const m=JSON.parse('{"title":"实现原理","description":"","frontmatter":{},"headers":[],"relativePath":"guide/ex/ex1.md","filePath":"guide/ex/ex1.md","lastUpdated":1731396361000}'),r={name:"guide/ex/ex1.md"};function o(s,e,d,n,c,u){return t(),i("div",null,e[0]||(e[0]=[l('

实现原理

录制原理

  • 通过webview加载目标页面,向目标页面注入js,获取控制权。
  • 通过js监听用户的行为及操作,将监听的行为转换为匹配的语法。
  • 将录制生成的语法进行存储生成脚本文件。

脚本执行原理

  • 读取传输的脚本文件。
  • 新建一个浏览器进程并通过js解析语法转为指令,将指令分层级通过进行ipc进行传输,层级按照 浏览器>页面> iframe。
  • 具体页面拿到响应的指令,再将指令转换为具体的js脚本执行,并记录执行数据。
  • 运行完成后,将执行数据结果返回。
',5)]))}const p=a(r,[["render",o]]);export{m as __pageData,p as default}; diff --git a/assets/guide_ex_ex1.md.b7a747e6.lean.js b/assets/guide_ex_ex1.md.8b03ad5c.lean.js similarity index 95% rename from assets/guide_ex_ex1.md.b7a747e6.lean.js rename to assets/guide_ex_ex1.md.8b03ad5c.lean.js index 4c7bfb7..cd2c43a 100644 --- a/assets/guide_ex_ex1.md.b7a747e6.lean.js +++ b/assets/guide_ex_ex1.md.8b03ad5c.lean.js @@ -1 +1 @@ -import{_ as a,o as t,c as i,O as l}from"./chunks/framework.58a9e095.js";const m=JSON.parse('{"title":"实现原理","description":"","frontmatter":{},"headers":[],"relativePath":"guide/ex/ex1.md","filePath":"guide/ex/ex1.md","lastUpdated":1730861693000}'),r={name:"guide/ex/ex1.md"};function o(s,e,d,n,c,u){return t(),i("div",null,e[0]||(e[0]=[l('

实现原理

录制原理

  • 通过webview加载目标页面,向目标页面注入js,获取控制权。
  • 通过js监听用户的行为及操作,将监听的行为转换为匹配的语法。
  • 将录制生成的语法进行存储生成脚本文件。

脚本执行原理

  • 读取传输的脚本文件。
  • 新建一个浏览器进程并通过js解析语法转为指令,将指令分层级通过进行ipc进行传输,层级按照 浏览器>页面> iframe。
  • 具体页面拿到响应的指令,再将指令转换为具体的js脚本执行,并记录执行数据。
  • 运行完成后,将执行数据结果返回。
',5)]))}const p=a(r,[["render",o]]);export{m as __pageData,p as default}; +import{_ as a,o as t,c as i,O as l}from"./chunks/framework.58a9e095.js";const m=JSON.parse('{"title":"实现原理","description":"","frontmatter":{},"headers":[],"relativePath":"guide/ex/ex1.md","filePath":"guide/ex/ex1.md","lastUpdated":1731396361000}'),r={name:"guide/ex/ex1.md"};function o(s,e,d,n,c,u){return t(),i("div",null,e[0]||(e[0]=[l('

实现原理

录制原理

  • 通过webview加载目标页面,向目标页面注入js,获取控制权。
  • 通过js监听用户的行为及操作,将监听的行为转换为匹配的语法。
  • 将录制生成的语法进行存储生成脚本文件。

脚本执行原理

  • 读取传输的脚本文件。
  • 新建一个浏览器进程并通过js解析语法转为指令,将指令分层级通过进行ipc进行传输,层级按照 浏览器>页面> iframe。
  • 具体页面拿到响应的指令,再将指令转换为具体的js脚本执行,并记录执行数据。
  • 运行完成后,将执行数据结果返回。
',5)]))}const p=a(r,[["render",o]]);export{m as __pageData,p as default}; diff --git a/assets/guide_ex_ex2.md.a2f5f59a.js b/assets/guide_ex_ex2.md.bb7ab9aa.js similarity index 96% rename from assets/guide_ex_ex2.md.a2f5f59a.js rename to assets/guide_ex_ex2.md.bb7ab9aa.js index 6c0fcff..958f3e1 100644 --- a/assets/guide_ex_ex2.md.a2f5f59a.js +++ b/assets/guide_ex_ex2.md.bb7ab9aa.js @@ -1 +1 @@ -import{_ as e,o as t,c as r,O as o}from"./chunks/framework.58a9e095.js";const u=JSON.parse('{"title":"特性","description":"","frontmatter":{},"headers":[],"relativePath":"guide/ex/ex2.md","filePath":"guide/ex/ex2.md","lastUpdated":1730861693000}'),i={name:"guide/ex/ex2.md"};function d(n,a,l,s,h,c){return t(),r("div",null,a[0]||(a[0]=[o('

特性

上手简单

     基于录制生成准确代码,使用门槛低。

丰富底层指令支持

     开发时,我们内置了多种基础指令,足以满足90%的用户场景。

开源共享

     我们使用MIT开源协议,用户可以充分扩展满足业务需求

实时运行上下文

     为使得逻辑更通俗易懂,设计时无需用户区分上下文环境,运行时将根据页面操作自动完成转化。

',9)]))}const x=e(i,[["render",d]]);export{u as __pageData,x as default}; +import{_ as e,o as t,c as r,O as o}from"./chunks/framework.58a9e095.js";const u=JSON.parse('{"title":"特性","description":"","frontmatter":{},"headers":[],"relativePath":"guide/ex/ex2.md","filePath":"guide/ex/ex2.md","lastUpdated":1731396361000}'),i={name:"guide/ex/ex2.md"};function d(n,a,l,s,h,c){return t(),r("div",null,a[0]||(a[0]=[o('

特性

上手简单

     基于录制生成准确代码,使用门槛低。

丰富底层指令支持

     开发时,我们内置了多种基础指令,足以满足90%的用户场景。

开源共享

     我们使用MIT开源协议,用户可以充分扩展满足业务需求

实时运行上下文

     为使得逻辑更通俗易懂,设计时无需用户区分上下文环境,运行时将根据页面操作自动完成转化。

',9)]))}const x=e(i,[["render",d]]);export{u as __pageData,x as default}; diff --git a/assets/guide_ex_ex2.md.a2f5f59a.lean.js b/assets/guide_ex_ex2.md.bb7ab9aa.lean.js similarity index 96% rename from assets/guide_ex_ex2.md.a2f5f59a.lean.js rename to assets/guide_ex_ex2.md.bb7ab9aa.lean.js index 6c0fcff..958f3e1 100644 --- a/assets/guide_ex_ex2.md.a2f5f59a.lean.js +++ b/assets/guide_ex_ex2.md.bb7ab9aa.lean.js @@ -1 +1 @@ -import{_ as e,o as t,c as r,O as o}from"./chunks/framework.58a9e095.js";const u=JSON.parse('{"title":"特性","description":"","frontmatter":{},"headers":[],"relativePath":"guide/ex/ex2.md","filePath":"guide/ex/ex2.md","lastUpdated":1730861693000}'),i={name:"guide/ex/ex2.md"};function d(n,a,l,s,h,c){return t(),r("div",null,a[0]||(a[0]=[o('

特性

上手简单

     基于录制生成准确代码,使用门槛低。

丰富底层指令支持

     开发时,我们内置了多种基础指令,足以满足90%的用户场景。

开源共享

     我们使用MIT开源协议,用户可以充分扩展满足业务需求

实时运行上下文

     为使得逻辑更通俗易懂,设计时无需用户区分上下文环境,运行时将根据页面操作自动完成转化。

',9)]))}const x=e(i,[["render",d]]);export{u as __pageData,x as default}; +import{_ as e,o as t,c as r,O as o}from"./chunks/framework.58a9e095.js";const u=JSON.parse('{"title":"特性","description":"","frontmatter":{},"headers":[],"relativePath":"guide/ex/ex2.md","filePath":"guide/ex/ex2.md","lastUpdated":1731396361000}'),i={name:"guide/ex/ex2.md"};function d(n,a,l,s,h,c){return t(),r("div",null,a[0]||(a[0]=[o('

特性

上手简单

     基于录制生成准确代码,使用门槛低。

丰富底层指令支持

     开发时,我们内置了多种基础指令,足以满足90%的用户场景。

开源共享

     我们使用MIT开源协议,用户可以充分扩展满足业务需求

实时运行上下文

     为使得逻辑更通俗易懂,设计时无需用户区分上下文环境,运行时将根据页面操作自动完成转化。

',9)]))}const x=e(i,[["render",d]]);export{u as __pageData,x as default}; diff --git a/assets/guide_exam_apiHook.md.93510b75.js b/assets/guide_exam_apiHook.md.c80bf311.js similarity index 99% rename from assets/guide_exam_apiHook.md.93510b75.js rename to assets/guide_exam_apiHook.md.c80bf311.js index 2feb9f8..2b4f3d4 100644 --- a/assets/guide_exam_apiHook.md.93510b75.js +++ b/assets/guide_exam_apiHook.md.c80bf311.js @@ -1,4 +1,4 @@ -import{_ as a,o as n,c as p,O as l}from"./chunks/framework.58a9e095.js";const F=JSON.parse('{"title":"接口数据测试","description":"","frontmatter":{},"headers":[],"relativePath":"guide/exam/apiHook.md","filePath":"guide/exam/apiHook.md","lastUpdated":1730861693000}'),o={name:"guide/exam/apiHook.md"};function e(t,s,c,r,E,y){return n(),p("div",null,s[0]||(s[0]=[l(`

接口数据测试

YinTao 内置强大的接口模块,可以满足日常几乎所有的数据测试类型。

接口数据监听和修改

js

+import{_ as a,o as n,c as p,O as l}from"./chunks/framework.58a9e095.js";const F=JSON.parse('{"title":"接口数据测试","description":"","frontmatter":{},"headers":[],"relativePath":"guide/exam/apiHook.md","filePath":"guide/exam/apiHook.md","lastUpdated":1731396361000}'),o={name:"guide/exam/apiHook.md"};function e(t,s,c,r,E,y){return n(),p("div",null,s[0]||(s[0]=[l(`

接口数据测试

YinTao 内置强大的接口模块,可以满足日常几乎所有的数据测试类型。

接口数据监听和修改

js

 await page.to('http://t.268xue.com/');
 await browser.on('request',(res)=>{
     // 监听页面请求
diff --git a/assets/guide_exam_apiHook.md.93510b75.lean.js b/assets/guide_exam_apiHook.md.c80bf311.lean.js
similarity index 99%
rename from assets/guide_exam_apiHook.md.93510b75.lean.js
rename to assets/guide_exam_apiHook.md.c80bf311.lean.js
index 2feb9f8..2b4f3d4 100644
--- a/assets/guide_exam_apiHook.md.93510b75.lean.js
+++ b/assets/guide_exam_apiHook.md.c80bf311.lean.js
@@ -1,4 +1,4 @@
-import{_ as a,o as n,c as p,O as l}from"./chunks/framework.58a9e095.js";const F=JSON.parse('{"title":"接口数据测试","description":"","frontmatter":{},"headers":[],"relativePath":"guide/exam/apiHook.md","filePath":"guide/exam/apiHook.md","lastUpdated":1730861693000}'),o={name:"guide/exam/apiHook.md"};function e(t,s,c,r,E,y){return n(),p("div",null,s[0]||(s[0]=[l(`

接口数据测试

YinTao 内置强大的接口模块,可以满足日常几乎所有的数据测试类型。

接口数据监听和修改

js

+import{_ as a,o as n,c as p,O as l}from"./chunks/framework.58a9e095.js";const F=JSON.parse('{"title":"接口数据测试","description":"","frontmatter":{},"headers":[],"relativePath":"guide/exam/apiHook.md","filePath":"guide/exam/apiHook.md","lastUpdated":1731396361000}'),o={name:"guide/exam/apiHook.md"};function e(t,s,c,r,E,y){return n(),p("div",null,s[0]||(s[0]=[l(`

接口数据测试

YinTao 内置强大的接口模块,可以满足日常几乎所有的数据测试类型。

接口数据监听和修改

js

 await page.to('http://t.268xue.com/');
 await browser.on('request',(res)=>{
     // 监听页面请求
diff --git a/assets/guide_exam_baseOpt.md.b7e41691.js b/assets/guide_exam_baseOpt.md.9b964e0d.js
similarity index 99%
rename from assets/guide_exam_baseOpt.md.b7e41691.js
rename to assets/guide_exam_baseOpt.md.9b964e0d.js
index 02cc3ce..d9fa456 100644
--- a/assets/guide_exam_baseOpt.md.b7e41691.js
+++ b/assets/guide_exam_baseOpt.md.9b964e0d.js
@@ -1,4 +1,4 @@
-import{_ as a,o as n,c as l,O as p}from"./chunks/framework.58a9e095.js";const F=JSON.parse('{"title":"常规操作流程示例","description":"","frontmatter":{},"headers":[],"relativePath":"guide/exam/baseOpt.md","filePath":"guide/exam/baseOpt.md","lastUpdated":1730861693000}'),o={name:"guide/exam/baseOpt.md"};function t(e,s,c,r,y,E){return n(),l("div",null,s[0]||(s[0]=[p(`

常规操作流程示例

js
const homePage = "https://4399.com" // 定义变量
+import{_ as a,o as n,c as l,O as p}from"./chunks/framework.58a9e095.js";const F=JSON.parse('{"title":"常规操作流程示例","description":"","frontmatter":{},"headers":[],"relativePath":"guide/exam/baseOpt.md","filePath":"guide/exam/baseOpt.md","lastUpdated":1731396361000}'),o={name:"guide/exam/baseOpt.md"};function t(e,s,c,r,y,E){return n(),l("div",null,s[0]||(s[0]=[p(`

常规操作流程示例

js
const homePage = "https://4399.com" // 定义变量
 await page.create(homePage) // 使用变量打开页面
 await sleep(1000) // 固定等待
 await page.to(\`https://baidu.com\`) // 切换页面
diff --git a/assets/guide_exam_baseOpt.md.b7e41691.lean.js b/assets/guide_exam_baseOpt.md.9b964e0d.lean.js
similarity index 99%
rename from assets/guide_exam_baseOpt.md.b7e41691.lean.js
rename to assets/guide_exam_baseOpt.md.9b964e0d.lean.js
index 02cc3ce..d9fa456 100644
--- a/assets/guide_exam_baseOpt.md.b7e41691.lean.js
+++ b/assets/guide_exam_baseOpt.md.9b964e0d.lean.js
@@ -1,4 +1,4 @@
-import{_ as a,o as n,c as l,O as p}from"./chunks/framework.58a9e095.js";const F=JSON.parse('{"title":"常规操作流程示例","description":"","frontmatter":{},"headers":[],"relativePath":"guide/exam/baseOpt.md","filePath":"guide/exam/baseOpt.md","lastUpdated":1730861693000}'),o={name:"guide/exam/baseOpt.md"};function t(e,s,c,r,y,E){return n(),l("div",null,s[0]||(s[0]=[p(`

常规操作流程示例

js
const homePage = "https://4399.com" // 定义变量
+import{_ as a,o as n,c as l,O as p}from"./chunks/framework.58a9e095.js";const F=JSON.parse('{"title":"常规操作流程示例","description":"","frontmatter":{},"headers":[],"relativePath":"guide/exam/baseOpt.md","filePath":"guide/exam/baseOpt.md","lastUpdated":1731396361000}'),o={name:"guide/exam/baseOpt.md"};function t(e,s,c,r,y,E){return n(),l("div",null,s[0]||(s[0]=[p(`

常规操作流程示例

js
const homePage = "https://4399.com" // 定义变量
 await page.create(homePage) // 使用变量打开页面
 await sleep(1000) // 固定等待
 await page.to(\`https://baidu.com\`) // 切换页面
diff --git a/assets/guide_exam_mobile.md.7d7bb39a.js b/assets/guide_exam_mobile.md.7777c4e4.js
similarity index 98%
rename from assets/guide_exam_mobile.md.7d7bb39a.js
rename to assets/guide_exam_mobile.md.7777c4e4.js
index 7a6aaee..818d5d9 100644
--- a/assets/guide_exam_mobile.md.7d7bb39a.js
+++ b/assets/guide_exam_mobile.md.7777c4e4.js
@@ -1,4 +1,4 @@
-import{_ as a,o as n,c as l,O as p}from"./chunks/framework.58a9e095.js";const d=JSON.parse('{"title":"移动端H5页面测试","description":"","frontmatter":{},"headers":[],"relativePath":"guide/exam/mobile.md","filePath":"guide/exam/mobile.md","lastUpdated":1730861693000}'),o={name:"guide/exam/mobile.md"};function e(t,s,c,r,E,i){return n(),l("div",null,s[0]||(s[0]=[p(`

移动端H5页面测试

js
// 使用移动版百度搜索京东
+import{_ as a,o as n,c as l,O as p}from"./chunks/framework.58a9e095.js";const d=JSON.parse('{"title":"移动端H5页面测试","description":"","frontmatter":{},"headers":[],"relativePath":"guide/exam/mobile.md","filePath":"guide/exam/mobile.md","lastUpdated":1731396361000}'),o={name:"guide/exam/mobile.md"};function e(t,s,c,r,E,i){return n(),l("div",null,s[0]||(s[0]=[p(`

移动端H5页面测试

js
// 使用移动版百度搜索京东
 await page.setDevice('iPhone 11')
 await page.to(\`https://baidu.com\`)
 await dom.fill('label',"京东");
diff --git a/assets/guide_exam_mobile.md.7d7bb39a.lean.js b/assets/guide_exam_mobile.md.7777c4e4.lean.js
similarity index 98%
rename from assets/guide_exam_mobile.md.7d7bb39a.lean.js
rename to assets/guide_exam_mobile.md.7777c4e4.lean.js
index 7a6aaee..818d5d9 100644
--- a/assets/guide_exam_mobile.md.7d7bb39a.lean.js
+++ b/assets/guide_exam_mobile.md.7777c4e4.lean.js
@@ -1,4 +1,4 @@
-import{_ as a,o as n,c as l,O as p}from"./chunks/framework.58a9e095.js";const d=JSON.parse('{"title":"移动端H5页面测试","description":"","frontmatter":{},"headers":[],"relativePath":"guide/exam/mobile.md","filePath":"guide/exam/mobile.md","lastUpdated":1730861693000}'),o={name:"guide/exam/mobile.md"};function e(t,s,c,r,E,i){return n(),l("div",null,s[0]||(s[0]=[p(`

移动端H5页面测试

js
// 使用移动版百度搜索京东
+import{_ as a,o as n,c as l,O as p}from"./chunks/framework.58a9e095.js";const d=JSON.parse('{"title":"移动端H5页面测试","description":"","frontmatter":{},"headers":[],"relativePath":"guide/exam/mobile.md","filePath":"guide/exam/mobile.md","lastUpdated":1731396361000}'),o={name:"guide/exam/mobile.md"};function e(t,s,c,r,E,i){return n(),l("div",null,s[0]||(s[0]=[p(`

移动端H5页面测试

js
// 使用移动版百度搜索京东
 await page.setDevice('iPhone 11')
 await page.to(\`https://baidu.com\`)
 await dom.fill('label',"京东");
diff --git a/assets/guide_exam_modifyDate.md.731f4685.js b/assets/guide_exam_modifyDate.md.f83b945a.js
similarity index 99%
rename from assets/guide_exam_modifyDate.md.731f4685.js
rename to assets/guide_exam_modifyDate.md.f83b945a.js
index fda31e3..0e6839e 100644
--- a/assets/guide_exam_modifyDate.md.731f4685.js
+++ b/assets/guide_exam_modifyDate.md.f83b945a.js
@@ -1,4 +1,4 @@
-import{_ as a,o as n,c as l,O as p}from"./chunks/framework.58a9e095.js";const o="/assets/modifyDate.a6b50964.gif",d=JSON.parse('{"title":"Element日期组件获取当前日期","description":"","frontmatter":{},"headers":[],"relativePath":"guide/exam/modifyDate.md","filePath":"guide/exam/modifyDate.md","lastUpdated":1730861693000}'),e={name:"guide/exam/modifyDate.md"};function t(c,s,r,E,y,i){return n(),l("div",null,s[0]||(s[0]=[p(`

Element日期组件获取当前日期

yintao 引擎支持插入js代码运行,例如在选择日期控件时,编写获取当前日期js代码,即可解决因选择固定日期导致用例执行失败的情况。

请求示例:

js
  //打开Element日期组件
+import{_ as a,o as n,c as l,O as p}from"./chunks/framework.58a9e095.js";const o="/assets/modifyDate.a6b50964.gif",d=JSON.parse('{"title":"Element日期组件获取当前日期","description":"","frontmatter":{},"headers":[],"relativePath":"guide/exam/modifyDate.md","filePath":"guide/exam/modifyDate.md","lastUpdated":1731396361000}'),e={name:"guide/exam/modifyDate.md"};function t(c,s,r,E,y,i){return n(),l("div",null,s[0]||(s[0]=[p(`

Element日期组件获取当前日期

yintao 引擎支持插入js代码运行,例如在选择日期控件时,编写获取当前日期js代码,即可解决因选择固定日期导致用例执行失败的情况。

请求示例:

js
  //打开Element日期组件
   await page.create(\`https://element.eleme.cn/#/zh-CN/component/date-picker\`)
   await sleep(1000)
   //js获取当前日期
diff --git a/assets/guide_exam_modifyDate.md.731f4685.lean.js b/assets/guide_exam_modifyDate.md.f83b945a.lean.js
similarity index 99%
rename from assets/guide_exam_modifyDate.md.731f4685.lean.js
rename to assets/guide_exam_modifyDate.md.f83b945a.lean.js
index fda31e3..0e6839e 100644
--- a/assets/guide_exam_modifyDate.md.731f4685.lean.js
+++ b/assets/guide_exam_modifyDate.md.f83b945a.lean.js
@@ -1,4 +1,4 @@
-import{_ as a,o as n,c as l,O as p}from"./chunks/framework.58a9e095.js";const o="/assets/modifyDate.a6b50964.gif",d=JSON.parse('{"title":"Element日期组件获取当前日期","description":"","frontmatter":{},"headers":[],"relativePath":"guide/exam/modifyDate.md","filePath":"guide/exam/modifyDate.md","lastUpdated":1730861693000}'),e={name:"guide/exam/modifyDate.md"};function t(c,s,r,E,y,i){return n(),l("div",null,s[0]||(s[0]=[p(`

Element日期组件获取当前日期

yintao 引擎支持插入js代码运行,例如在选择日期控件时,编写获取当前日期js代码,即可解决因选择固定日期导致用例执行失败的情况。

请求示例:

js
  //打开Element日期组件
+import{_ as a,o as n,c as l,O as p}from"./chunks/framework.58a9e095.js";const o="/assets/modifyDate.a6b50964.gif",d=JSON.parse('{"title":"Element日期组件获取当前日期","description":"","frontmatter":{},"headers":[],"relativePath":"guide/exam/modifyDate.md","filePath":"guide/exam/modifyDate.md","lastUpdated":1731396361000}'),e={name:"guide/exam/modifyDate.md"};function t(c,s,r,E,y,i){return n(),l("div",null,s[0]||(s[0]=[p(`

Element日期组件获取当前日期

yintao 引擎支持插入js代码运行,例如在选择日期控件时,编写获取当前日期js代码,即可解决因选择固定日期导致用例执行失败的情况。

请求示例:

js
  //打开Element日期组件
   await page.create(\`https://element.eleme.cn/#/zh-CN/component/date-picker\`)
   await sleep(1000)
   //js获取当前日期
diff --git a/assets/guide_exam_problem.md.06a375c3.js b/assets/guide_exam_problem.md.06a375c3.js
new file mode 100644
index 0000000..a6712fd
--- /dev/null
+++ b/assets/guide_exam_problem.md.06a375c3.js
@@ -0,0 +1,21 @@
+import{_ as a,o as n,c as o,O as p}from"./chunks/framework.58a9e095.js";const d=JSON.parse('{"title":"常见问题","description":"","frontmatter":{},"headers":[],"relativePath":"guide/exam/problem.md","filePath":"guide/exam/problem.md","lastUpdated":1731396361000}'),l={name:"guide/exam/problem.md"};function e(t,s,r,c,y,i){return n(),o("div",null,s[0]||(s[0]=[p(`

常见问题

页面访问https出现 您的连接不是私密连接

js
// 脚本首行配置忽略https
+await page.setBrowserCofing({ignoreHTTPSErrors:true})
+// ....其他代码
// 脚本首行配置忽略https
+await page.setBrowserCofing({ignoreHTTPSErrors:true})
+// ....其他代码

获取playwright原生控件

获取pw原生控件可以加强对页面操作的定制化, yintao 通过对pw进行封装来自动完成调度。

结构如下,可通过page.control 来获取 TestControl 对象. 更多用法参考

js
class TestControl {
+  runContext: Page | Frame | undefined
+  browserContext: BrowserContext | undefined
+  currentPage: Page | undefined
+  browser: Browser
+  id: string
+ }
class TestControl {
+  runContext: Page | Frame | undefined
+  browserContext: BrowserContext | undefined
+  currentPage: Page | undefined
+  browser: Browser
+  id: string
+ }
js

+// export: 获取浏览器的cookeis信息
+let cookies =  await page.control.browserContext.cookies();

+// export: 获取浏览器的cookeis信息
+let cookies =  await page.control.browserContext.cookies();
`,8)]))}const F=a(l,[["render",e]]);export{d as __pageData,F as default}; diff --git a/assets/guide_exam_problem.md.06a375c3.lean.js b/assets/guide_exam_problem.md.06a375c3.lean.js new file mode 100644 index 0000000..a6712fd --- /dev/null +++ b/assets/guide_exam_problem.md.06a375c3.lean.js @@ -0,0 +1,21 @@ +import{_ as a,o as n,c as o,O as p}from"./chunks/framework.58a9e095.js";const d=JSON.parse('{"title":"常见问题","description":"","frontmatter":{},"headers":[],"relativePath":"guide/exam/problem.md","filePath":"guide/exam/problem.md","lastUpdated":1731396361000}'),l={name:"guide/exam/problem.md"};function e(t,s,r,c,y,i){return n(),o("div",null,s[0]||(s[0]=[p(`

常见问题

页面访问https出现 您的连接不是私密连接

js
// 脚本首行配置忽略https
+await page.setBrowserCofing({ignoreHTTPSErrors:true})
+// ....其他代码
// 脚本首行配置忽略https
+await page.setBrowserCofing({ignoreHTTPSErrors:true})
+// ....其他代码

获取playwright原生控件

获取pw原生控件可以加强对页面操作的定制化, yintao 通过对pw进行封装来自动完成调度。

结构如下,可通过page.control 来获取 TestControl 对象. 更多用法参考

js
class TestControl {
+  runContext: Page | Frame | undefined
+  browserContext: BrowserContext | undefined
+  currentPage: Page | undefined
+  browser: Browser
+  id: string
+ }
class TestControl {
+  runContext: Page | Frame | undefined
+  browserContext: BrowserContext | undefined
+  currentPage: Page | undefined
+  browser: Browser
+  id: string
+ }
js

+// export: 获取浏览器的cookeis信息
+let cookies =  await page.control.browserContext.cookies();

+// export: 获取浏览器的cookeis信息
+let cookies =  await page.control.browserContext.cookies();
`,8)]))}const F=a(l,[["render",e]]);export{d as __pageData,F as default}; diff --git a/assets/guide_exam_problem.md.0f24a69f.js b/assets/guide_exam_problem.md.0f24a69f.js deleted file mode 100644 index c22efae..0000000 --- a/assets/guide_exam_problem.md.0f24a69f.js +++ /dev/null @@ -1,5 +0,0 @@ -import{_ as a,o as e,c as n,O as t}from"./chunks/framework.58a9e095.js";const m=JSON.parse('{"title":"常见问题","description":"","frontmatter":{},"headers":[],"relativePath":"guide/exam/problem.md","filePath":"guide/exam/problem.md","lastUpdated":1730861693000}'),o={name:"guide/exam/problem.md"};function p(l,s,r,c,i,d){return e(),n("div",null,s[0]||(s[0]=[t(`

常见问题

页面访问https出现 您的连接不是私密连接

js
// 脚本首行配置忽略https
-await page.setBrowserCofing({ignoreHTTPSErrors:true})
-// ....其他代码
// 脚本首行配置忽略https
-await page.setBrowserCofing({ignoreHTTPSErrors:true})
-// ....其他代码
`,3)]))}const u=a(o,[["render",p]]);export{m as __pageData,u as default}; diff --git a/assets/guide_exam_problem.md.0f24a69f.lean.js b/assets/guide_exam_problem.md.0f24a69f.lean.js deleted file mode 100644 index c22efae..0000000 --- a/assets/guide_exam_problem.md.0f24a69f.lean.js +++ /dev/null @@ -1,5 +0,0 @@ -import{_ as a,o as e,c as n,O as t}from"./chunks/framework.58a9e095.js";const m=JSON.parse('{"title":"常见问题","description":"","frontmatter":{},"headers":[],"relativePath":"guide/exam/problem.md","filePath":"guide/exam/problem.md","lastUpdated":1730861693000}'),o={name:"guide/exam/problem.md"};function p(l,s,r,c,i,d){return e(),n("div",null,s[0]||(s[0]=[t(`

常见问题

页面访问https出现 您的连接不是私密连接

js
// 脚本首行配置忽略https
-await page.setBrowserCofing({ignoreHTTPSErrors:true})
-// ....其他代码
// 脚本首行配置忽略https
-await page.setBrowserCofing({ignoreHTTPSErrors:true})
-// ....其他代码
`,3)]))}const u=a(o,[["render",p]]);export{m as __pageData,u as default}; diff --git a/assets/guide_exam_select.md.a744a5cc.js b/assets/guide_exam_select.md.27938d2d.js similarity index 99% rename from assets/guide_exam_select.md.a744a5cc.js rename to assets/guide_exam_select.md.27938d2d.js index c16c58d..dd65e29 100644 --- a/assets/guide_exam_select.md.a744a5cc.js +++ b/assets/guide_exam_select.md.27938d2d.js @@ -1,4 +1,4 @@ -import{_ as a,o as n,c as l,O as p}from"./chunks/framework.58a9e095.js";const e="/assets/find_element.1a2e8b50.png",u=JSON.parse('{"title":"选择器进阶","description":"","frontmatter":{},"headers":[],"relativePath":"guide/exam/select.md","filePath":"guide/exam/select.md","lastUpdated":1730861693000}'),o={name:"guide/exam/select.md"};function t(c,s,r,y,i,d){return n(),l("div",null,s[0]||(s[0]=[p('

选择器进阶

ui测试中最重要的内容是进行稳定的元素定位,想要做好这部分工作,需要一些基础的前端功底,了解基本的xml的理论知识。 以下内容默认用户已经看完啦xml基础知识的前提

页面结构和定位调试

在讲解之前需要用户学会打开chrome调试工具, 当用户打开调试工具后在最上方选择element即可对页面的xml层级元素进行调试啦。

在调试工具页面中按下ctrl + f 将会出现一个输入框,在输入框输入标准选择器(xpath or css selector),如果有匹配元素将会高亮显示, 通过查看高亮元素即可,确定定位方式是否准确。

xpath 选择器

很多人对xpath可能并不陌生,但大多只了解xpath的基础定位方式,例如全路径定位/html/body/div/p/span 其实xpath支持很多定位方式,模糊以及动态定位,且编写,测试相对容易,因此重点推荐使用

以下理解需要xpath基础,不了解的可以先行学习

shell

+import{_ as a,o as n,c as l,O as p}from"./chunks/framework.58a9e095.js";const e="/assets/find_element.1a2e8b50.png",u=JSON.parse('{"title":"选择器进阶","description":"","frontmatter":{},"headers":[],"relativePath":"guide/exam/select.md","filePath":"guide/exam/select.md","lastUpdated":1731396361000}'),o={name:"guide/exam/select.md"};function t(c,s,r,y,i,d){return n(),l("div",null,s[0]||(s[0]=[p('

选择器进阶

ui测试中最重要的内容是进行稳定的元素定位,想要做好这部分工作,需要一些基础的前端功底,了解基本的xml的理论知识。 以下内容默认用户已经看完啦xml基础知识的前提

页面结构和定位调试

在讲解之前需要用户学会打开chrome调试工具, 当用户打开调试工具后在最上方选择element即可对页面的xml层级元素进行调试啦。

在调试工具页面中按下ctrl + f 将会出现一个输入框,在输入框输入标准选择器(xpath or css selector),如果有匹配元素将会高亮显示, 通过查看高亮元素即可,确定定位方式是否准确。

xpath 选择器

很多人对xpath可能并不陌生,但大多只了解xpath的基础定位方式,例如全路径定位/html/body/div/p/span 其实xpath支持很多定位方式,模糊以及动态定位,且编写,测试相对容易,因此重点推荐使用

以下理解需要xpath基础,不了解的可以先行学习

shell

 //label[text()="活动名称"]    # 根据文本内容匹配元素
 
 //label[string()="活动名称"]    # 根据包含内容匹配子元素- 容易匹配多个
diff --git a/assets/guide_exam_select.md.a744a5cc.lean.js b/assets/guide_exam_select.md.27938d2d.lean.js
similarity index 99%
rename from assets/guide_exam_select.md.a744a5cc.lean.js
rename to assets/guide_exam_select.md.27938d2d.lean.js
index c16c58d..dd65e29 100644
--- a/assets/guide_exam_select.md.a744a5cc.lean.js
+++ b/assets/guide_exam_select.md.27938d2d.lean.js
@@ -1,4 +1,4 @@
-import{_ as a,o as n,c as l,O as p}from"./chunks/framework.58a9e095.js";const e="/assets/find_element.1a2e8b50.png",u=JSON.parse('{"title":"选择器进阶","description":"","frontmatter":{},"headers":[],"relativePath":"guide/exam/select.md","filePath":"guide/exam/select.md","lastUpdated":1730861693000}'),o={name:"guide/exam/select.md"};function t(c,s,r,y,i,d){return n(),l("div",null,s[0]||(s[0]=[p('

选择器进阶

ui测试中最重要的内容是进行稳定的元素定位,想要做好这部分工作,需要一些基础的前端功底,了解基本的xml的理论知识。 以下内容默认用户已经看完啦xml基础知识的前提

页面结构和定位调试

在讲解之前需要用户学会打开chrome调试工具, 当用户打开调试工具后在最上方选择element即可对页面的xml层级元素进行调试啦。

在调试工具页面中按下ctrl + f 将会出现一个输入框,在输入框输入标准选择器(xpath or css selector),如果有匹配元素将会高亮显示, 通过查看高亮元素即可,确定定位方式是否准确。

xpath 选择器

很多人对xpath可能并不陌生,但大多只了解xpath的基础定位方式,例如全路径定位/html/body/div/p/span 其实xpath支持很多定位方式,模糊以及动态定位,且编写,测试相对容易,因此重点推荐使用

以下理解需要xpath基础,不了解的可以先行学习

shell

+import{_ as a,o as n,c as l,O as p}from"./chunks/framework.58a9e095.js";const e="/assets/find_element.1a2e8b50.png",u=JSON.parse('{"title":"选择器进阶","description":"","frontmatter":{},"headers":[],"relativePath":"guide/exam/select.md","filePath":"guide/exam/select.md","lastUpdated":1731396361000}'),o={name:"guide/exam/select.md"};function t(c,s,r,y,i,d){return n(),l("div",null,s[0]||(s[0]=[p('

选择器进阶

ui测试中最重要的内容是进行稳定的元素定位,想要做好这部分工作,需要一些基础的前端功底,了解基本的xml的理论知识。 以下内容默认用户已经看完啦xml基础知识的前提

页面结构和定位调试

在讲解之前需要用户学会打开chrome调试工具, 当用户打开调试工具后在最上方选择element即可对页面的xml层级元素进行调试啦。

在调试工具页面中按下ctrl + f 将会出现一个输入框,在输入框输入标准选择器(xpath or css selector),如果有匹配元素将会高亮显示, 通过查看高亮元素即可,确定定位方式是否准确。

xpath 选择器

很多人对xpath可能并不陌生,但大多只了解xpath的基础定位方式,例如全路径定位/html/body/div/p/span 其实xpath支持很多定位方式,模糊以及动态定位,且编写,测试相对容易,因此重点推荐使用

以下理解需要xpath基础,不了解的可以先行学习

shell

 //label[text()="活动名称"]    # 根据文本内容匹配元素
 
 //label[string()="活动名称"]    # 根据包含内容匹配子元素- 容易匹配多个
diff --git a/assets/guide_instructs_assert.md.92c2bef8.js b/assets/guide_instructs_assert.md.a0d683db.js
similarity index 99%
rename from assets/guide_instructs_assert.md.92c2bef8.js
rename to assets/guide_instructs_assert.md.a0d683db.js
index 01927e0..c3f3167 100644
--- a/assets/guide_instructs_assert.md.92c2bef8.js
+++ b/assets/guide_instructs_assert.md.a0d683db.js
@@ -1,4 +1,4 @@
-import{_ as a,o as l,c as o,O as e}from"./chunks/framework.58a9e095.js";const d=JSON.parse('{"title":"assert","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/assert.md","filePath":"guide/instructs/assert.md","lastUpdated":1730861693000}'),n={name:"guide/instructs/assert.md"};function p(t,s,r,c,i,y){return l(),o("div",null,s[0]||(s[0]=[e(`

assert

assert.all(string,times)

全局断言,判断当前页面内是否存在指定字符串。 默认判断规则为,判定默认6次每次间隔500ms,如果在规定时间能为找到则断言失败

js
await assert.all('立即下单') // 判断页面内是否存在立即下单文字
+import{_ as a,o as l,c as o,O as e}from"./chunks/framework.58a9e095.js";const d=JSON.parse('{"title":"assert","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/assert.md","filePath":"guide/instructs/assert.md","lastUpdated":1731396361000}'),n={name:"guide/instructs/assert.md"};function p(t,s,r,c,i,y){return l(),o("div",null,s[0]||(s[0]=[e(`

assert

assert.all(string,times)

全局断言,判断当前页面内是否存在指定字符串。 默认判断规则为,判定默认6次每次间隔500ms,如果在规定时间能为找到则断言失败

js
await assert.all('立即下单') // 判断页面内是否存在立即下单文字
 await assert.all('立即下单',10) // 增加重试次数
await assert.all('立即下单') // 判断页面内是否存在立即下单文字
 await assert.all('立即下单',10) // 增加重试次数

assert.true(value: bool | string | number ,errHint)

判断value内容是否为true.

js
await assert.true('存在') // 
 await assert.all(false, "断言内容为false,请检查相关代码逻辑") // 当断言失败时会显示,提示文字
await assert.true('存在') // 
diff --git a/assets/guide_instructs_assert.md.92c2bef8.lean.js b/assets/guide_instructs_assert.md.a0d683db.lean.js
similarity index 99%
rename from assets/guide_instructs_assert.md.92c2bef8.lean.js
rename to assets/guide_instructs_assert.md.a0d683db.lean.js
index 01927e0..c3f3167 100644
--- a/assets/guide_instructs_assert.md.92c2bef8.lean.js
+++ b/assets/guide_instructs_assert.md.a0d683db.lean.js
@@ -1,4 +1,4 @@
-import{_ as a,o as l,c as o,O as e}from"./chunks/framework.58a9e095.js";const d=JSON.parse('{"title":"assert","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/assert.md","filePath":"guide/instructs/assert.md","lastUpdated":1730861693000}'),n={name:"guide/instructs/assert.md"};function p(t,s,r,c,i,y){return l(),o("div",null,s[0]||(s[0]=[e(`

assert

assert.all(string,times)

全局断言,判断当前页面内是否存在指定字符串。 默认判断规则为,判定默认6次每次间隔500ms,如果在规定时间能为找到则断言失败

js
await assert.all('立即下单') // 判断页面内是否存在立即下单文字
+import{_ as a,o as l,c as o,O as e}from"./chunks/framework.58a9e095.js";const d=JSON.parse('{"title":"assert","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/assert.md","filePath":"guide/instructs/assert.md","lastUpdated":1731396361000}'),n={name:"guide/instructs/assert.md"};function p(t,s,r,c,i,y){return l(),o("div",null,s[0]||(s[0]=[e(`

assert

assert.all(string,times)

全局断言,判断当前页面内是否存在指定字符串。 默认判断规则为,判定默认6次每次间隔500ms,如果在规定时间能为找到则断言失败

js
await assert.all('立即下单') // 判断页面内是否存在立即下单文字
 await assert.all('立即下单',10) // 增加重试次数
await assert.all('立即下单') // 判断页面内是否存在立即下单文字
 await assert.all('立即下单',10) // 增加重试次数

assert.true(value: bool | string | number ,errHint)

判断value内容是否为true.

js
await assert.true('存在') // 
 await assert.all(false, "断言内容为false,请检查相关代码逻辑") // 当断言失败时会显示,提示文字
await assert.true('存在') // 
diff --git a/assets/guide_instructs_browser.md.ccad7dbc.js b/assets/guide_instructs_browser.md.274f8df1.js
similarity index 99%
rename from assets/guide_instructs_browser.md.ccad7dbc.js
rename to assets/guide_instructs_browser.md.274f8df1.js
index 21f0fda..73466f6 100644
--- a/assets/guide_instructs_browser.md.ccad7dbc.js
+++ b/assets/guide_instructs_browser.md.274f8df1.js
@@ -1,4 +1,4 @@
-import{_ as n,o as a,c as o,O as e}from"./chunks/framework.58a9e095.js";const u=JSON.parse('{"title":"browser","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/browser.md","filePath":"guide/instructs/browser.md","lastUpdated":1730861693000}'),l={name:"guide/instructs/browser.md"};function p(r,s,t,c,E,y){return a(),o("div",null,s[0]||(s[0]=[e(`

browser

browser.on(event:'request'| 'requestfaile' | 'requestfinished' | 'response',callback:Function)

监听浏览器事件 注意:: 监听事件是异步的且持续的,你不能期待再事件中抛出错误并中断执行。Response 结构参考

js
await browser.on('request',(res)=>{
+import{_ as n,o as a,c as o,O as e}from"./chunks/framework.58a9e095.js";const u=JSON.parse('{"title":"browser","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/browser.md","filePath":"guide/instructs/browser.md","lastUpdated":1731396361000}'),l={name:"guide/instructs/browser.md"};function p(r,s,t,c,E,y){return a(),o("div",null,s[0]||(s[0]=[e(`

browser

browser.on(event:'request'| 'requestfaile' | 'requestfinished' | 'response',callback:Function)

监听浏览器事件 注意:: 监听事件是异步的且持续的,你不能期待再事件中抛出错误并中断执行。Response 结构参考

js
await browser.on('request',(res)=>{
     // 监听页面请求
     console.log('url',res._initializer.url)
 })
diff --git a/assets/guide_instructs_browser.md.ccad7dbc.lean.js b/assets/guide_instructs_browser.md.274f8df1.lean.js
similarity index 99%
rename from assets/guide_instructs_browser.md.ccad7dbc.lean.js
rename to assets/guide_instructs_browser.md.274f8df1.lean.js
index 21f0fda..73466f6 100644
--- a/assets/guide_instructs_browser.md.ccad7dbc.lean.js
+++ b/assets/guide_instructs_browser.md.274f8df1.lean.js
@@ -1,4 +1,4 @@
-import{_ as n,o as a,c as o,O as e}from"./chunks/framework.58a9e095.js";const u=JSON.parse('{"title":"browser","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/browser.md","filePath":"guide/instructs/browser.md","lastUpdated":1730861693000}'),l={name:"guide/instructs/browser.md"};function p(r,s,t,c,E,y){return a(),o("div",null,s[0]||(s[0]=[e(`

browser

browser.on(event:'request'| 'requestfaile' | 'requestfinished' | 'response',callback:Function)

监听浏览器事件 注意:: 监听事件是异步的且持续的,你不能期待再事件中抛出错误并中断执行。Response 结构参考

js
await browser.on('request',(res)=>{
+import{_ as n,o as a,c as o,O as e}from"./chunks/framework.58a9e095.js";const u=JSON.parse('{"title":"browser","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/browser.md","filePath":"guide/instructs/browser.md","lastUpdated":1731396361000}'),l={name:"guide/instructs/browser.md"};function p(r,s,t,c,E,y){return a(),o("div",null,s[0]||(s[0]=[e(`

browser

browser.on(event:'request'| 'requestfaile' | 'requestfinished' | 'response',callback:Function)

监听浏览器事件 注意:: 监听事件是异步的且持续的,你不能期待再事件中抛出错误并中断执行。Response 结构参考

js
await browser.on('request',(res)=>{
     // 监听页面请求
     console.log('url',res._initializer.url)
 })
diff --git a/assets/guide_instructs_cookies.md.1b39e556.js b/assets/guide_instructs_cookies.md.d27d31fc.js
similarity index 98%
rename from assets/guide_instructs_cookies.md.1b39e556.js
rename to assets/guide_instructs_cookies.md.d27d31fc.js
index 3cfd328..a07411d 100644
--- a/assets/guide_instructs_cookies.md.1b39e556.js
+++ b/assets/guide_instructs_cookies.md.d27d31fc.js
@@ -1,4 +1,4 @@
-import{_ as t,o,c as a,O as e}from"./chunks/framework.58a9e095.js";const E=JSON.parse('{"title":"cookies","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/cookies.md","filePath":"guide/instructs/cookies.md","lastUpdated":1730861693000}'),l={name:"guide/instructs/cookies.md"};function n(p,s,c,r,d,i){return o(),a("div",null,s[0]||(s[0]=[e(`

cookies

适用于用户身份认证,以及验证码跳过。

cookies.setAll(url, value)

对指定页面批量设置cookie

名称类型默认值说明
urlstring必填,要设置cookie的url
valuestring必填,string类型的cookie值

示例:

js
await cookies.setAll("https://www.baidu.com/","jZ0bGJpeXR3")
await cookies.setAll("https://www.baidu.com/","jZ0bGJpeXR3")

cookies.set(cookies)

通过浏览器cookie标准,设置完整的cookie信息。

  • cookies : details[]

details参数:

名称类型默认值说明
urlstring必填,与cookie相关联的url
namestring必填,cookie的名称
valuestring必填,cookie的值
domainstring必填,cookie的域,使用前面的点进行标准化,以便适用于子域
pathstring选填,cookie的路径
securebooleanfalse选填,cookie是否标记为安全
httpOnlybooleanfalse选填,cookie是否仅标记为HTTP
expirationDatedouble选填,cookie的到期日期,表示自UNIX纪元以来的秒数
sameSitebooleanno_restriction选填,应用于此cookie的相同站点策略,可选:unspecified,no_restriction,lax,strict

注意: 新版不允许同时设置url和domain, 设置url后会自动生成对应的domain.

如果你要设置单个cookie更推荐使用domain + path 设置, 而非url

示例:

js
await cookies.set([{
+import{_ as t,o,c as a,O as e}from"./chunks/framework.58a9e095.js";const E=JSON.parse('{"title":"cookies","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/cookies.md","filePath":"guide/instructs/cookies.md","lastUpdated":1731396361000}'),l={name:"guide/instructs/cookies.md"};function n(p,s,c,r,d,i){return o(),a("div",null,s[0]||(s[0]=[e(`

cookies

适用于用户身份认证,以及验证码跳过。

cookies.setAll(url, value)

对指定页面批量设置cookie

名称类型默认值说明
urlstring必填,要设置cookie的url
valuestring必填,string类型的cookie值

示例:

js
await cookies.setAll("https://www.baidu.com/","jZ0bGJpeXR3")
await cookies.setAll("https://www.baidu.com/","jZ0bGJpeXR3")

cookies.set(cookies)

通过浏览器cookie标准,设置完整的cookie信息。

  • cookies : details[]

details参数:

名称类型默认值说明
urlstring必填,与cookie相关联的url
namestring必填,cookie的名称
valuestring必填,cookie的值
domainstring必填,cookie的域,使用前面的点进行标准化,以便适用于子域
pathstring选填,cookie的路径
securebooleanfalse选填,cookie是否标记为安全
httpOnlybooleanfalse选填,cookie是否仅标记为HTTP
expirationDatedouble选填,cookie的到期日期,表示自UNIX纪元以来的秒数
sameSitebooleanno_restriction选填,应用于此cookie的相同站点策略,可选:unspecified,no_restriction,lax,strict

注意: 新版不允许同时设置url和domain, 设置url后会自动生成对应的domain.

如果你要设置单个cookie更推荐使用domain + path 设置, 而非url

示例:

js
await cookies.set([{
   "domain": ".jd.com",
   "name": "sso.jd.com",
   "path": "/",
diff --git a/assets/guide_instructs_cookies.md.1b39e556.lean.js b/assets/guide_instructs_cookies.md.d27d31fc.lean.js
similarity index 98%
rename from assets/guide_instructs_cookies.md.1b39e556.lean.js
rename to assets/guide_instructs_cookies.md.d27d31fc.lean.js
index 3cfd328..a07411d 100644
--- a/assets/guide_instructs_cookies.md.1b39e556.lean.js
+++ b/assets/guide_instructs_cookies.md.d27d31fc.lean.js
@@ -1,4 +1,4 @@
-import{_ as t,o,c as a,O as e}from"./chunks/framework.58a9e095.js";const E=JSON.parse('{"title":"cookies","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/cookies.md","filePath":"guide/instructs/cookies.md","lastUpdated":1730861693000}'),l={name:"guide/instructs/cookies.md"};function n(p,s,c,r,d,i){return o(),a("div",null,s[0]||(s[0]=[e(`

cookies

适用于用户身份认证,以及验证码跳过。

cookies.setAll(url, value)

对指定页面批量设置cookie

名称类型默认值说明
urlstring必填,要设置cookie的url
valuestring必填,string类型的cookie值

示例:

js
await cookies.setAll("https://www.baidu.com/","jZ0bGJpeXR3")
await cookies.setAll("https://www.baidu.com/","jZ0bGJpeXR3")

cookies.set(cookies)

通过浏览器cookie标准,设置完整的cookie信息。

  • cookies : details[]

details参数:

名称类型默认值说明
urlstring必填,与cookie相关联的url
namestring必填,cookie的名称
valuestring必填,cookie的值
domainstring必填,cookie的域,使用前面的点进行标准化,以便适用于子域
pathstring选填,cookie的路径
securebooleanfalse选填,cookie是否标记为安全
httpOnlybooleanfalse选填,cookie是否仅标记为HTTP
expirationDatedouble选填,cookie的到期日期,表示自UNIX纪元以来的秒数
sameSitebooleanno_restriction选填,应用于此cookie的相同站点策略,可选:unspecified,no_restriction,lax,strict

注意: 新版不允许同时设置url和domain, 设置url后会自动生成对应的domain.

如果你要设置单个cookie更推荐使用domain + path 设置, 而非url

示例:

js
await cookies.set([{
+import{_ as t,o,c as a,O as e}from"./chunks/framework.58a9e095.js";const E=JSON.parse('{"title":"cookies","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/cookies.md","filePath":"guide/instructs/cookies.md","lastUpdated":1731396361000}'),l={name:"guide/instructs/cookies.md"};function n(p,s,c,r,d,i){return o(),a("div",null,s[0]||(s[0]=[e(`

cookies

适用于用户身份认证,以及验证码跳过。

cookies.setAll(url, value)

对指定页面批量设置cookie

名称类型默认值说明
urlstring必填,要设置cookie的url
valuestring必填,string类型的cookie值

示例:

js
await cookies.setAll("https://www.baidu.com/","jZ0bGJpeXR3")
await cookies.setAll("https://www.baidu.com/","jZ0bGJpeXR3")

cookies.set(cookies)

通过浏览器cookie标准,设置完整的cookie信息。

  • cookies : details[]

details参数:

名称类型默认值说明
urlstring必填,与cookie相关联的url
namestring必填,cookie的名称
valuestring必填,cookie的值
domainstring必填,cookie的域,使用前面的点进行标准化,以便适用于子域
pathstring选填,cookie的路径
securebooleanfalse选填,cookie是否标记为安全
httpOnlybooleanfalse选填,cookie是否仅标记为HTTP
expirationDatedouble选填,cookie的到期日期,表示自UNIX纪元以来的秒数
sameSitebooleanno_restriction选填,应用于此cookie的相同站点策略,可选:unspecified,no_restriction,lax,strict

注意: 新版不允许同时设置url和domain, 设置url后会自动生成对应的domain.

如果你要设置单个cookie更推荐使用domain + path 设置, 而非url

示例:

js
await cookies.set([{
   "domain": ".jd.com",
   "name": "sso.jd.com",
   "path": "/",
diff --git a/assets/guide_instructs_dom.md.58e1f351.js b/assets/guide_instructs_dom.md.71fe5e00.js
similarity index 99%
rename from assets/guide_instructs_dom.md.58e1f351.js
rename to assets/guide_instructs_dom.md.71fe5e00.js
index e897103..781130c 100644
--- a/assets/guide_instructs_dom.md.58e1f351.js
+++ b/assets/guide_instructs_dom.md.71fe5e00.js
@@ -1,4 +1,4 @@
-import{_ as a,o,c as n,O as l}from"./chunks/framework.58a9e095.js";const E=JSON.parse('{"title":"dom","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/dom.md","filePath":"guide/instructs/dom.md","lastUpdated":1730861693000}'),p={name:"guide/instructs/dom.md"};function e(t,s,c,r,i,d){return o(),n("div",null,s[0]||(s[0]=[l(`

dom

页面元素类,对页面元素操作的方法通常都包含在此类下面。

exist(sign): boolean

判断传入的元素值是否存在,存在返回true,不存在返回false

js
const result =  await dom.exist('#id')
+import{_ as a,o,c as n,O as l}from"./chunks/framework.58a9e095.js";const E=JSON.parse('{"title":"dom","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/dom.md","filePath":"guide/instructs/dom.md","lastUpdated":1731396361000}'),p={name:"guide/instructs/dom.md"};function e(t,s,c,r,i,d){return o(),n("div",null,s[0]||(s[0]=[l(`

dom

页面元素类,对页面元素操作的方法通常都包含在此类下面。

exist(sign): boolean

判断传入的元素值是否存在,存在返回true,不存在返回false

js
const result =  await dom.exist('#id')
 console.log('result:', result)
 // >  'result:' true
const result =  await dom.exist('#id')
 console.log('result:', result)
diff --git a/assets/guide_instructs_dom.md.58e1f351.lean.js b/assets/guide_instructs_dom.md.71fe5e00.lean.js
similarity index 99%
rename from assets/guide_instructs_dom.md.58e1f351.lean.js
rename to assets/guide_instructs_dom.md.71fe5e00.lean.js
index e897103..781130c 100644
--- a/assets/guide_instructs_dom.md.58e1f351.lean.js
+++ b/assets/guide_instructs_dom.md.71fe5e00.lean.js
@@ -1,4 +1,4 @@
-import{_ as a,o,c as n,O as l}from"./chunks/framework.58a9e095.js";const E=JSON.parse('{"title":"dom","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/dom.md","filePath":"guide/instructs/dom.md","lastUpdated":1730861693000}'),p={name:"guide/instructs/dom.md"};function e(t,s,c,r,i,d){return o(),n("div",null,s[0]||(s[0]=[l(`

dom

页面元素类,对页面元素操作的方法通常都包含在此类下面。

exist(sign): boolean

判断传入的元素值是否存在,存在返回true,不存在返回false

js
const result =  await dom.exist('#id')
+import{_ as a,o,c as n,O as l}from"./chunks/framework.58a9e095.js";const E=JSON.parse('{"title":"dom","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/dom.md","filePath":"guide/instructs/dom.md","lastUpdated":1731396361000}'),p={name:"guide/instructs/dom.md"};function e(t,s,c,r,i,d){return o(),n("div",null,s[0]||(s[0]=[l(`

dom

页面元素类,对页面元素操作的方法通常都包含在此类下面。

exist(sign): boolean

判断传入的元素值是否存在,存在返回true,不存在返回false

js
const result =  await dom.exist('#id')
 console.log('result:', result)
 // >  'result:' true
const result =  await dom.exist('#id')
 console.log('result:', result)
diff --git a/assets/guide_instructs_global.md.f509fcc9.js b/assets/guide_instructs_global.md.cc3b804e.js
similarity index 99%
rename from assets/guide_instructs_global.md.f509fcc9.js
rename to assets/guide_instructs_global.md.cc3b804e.js
index 098fd19..10df161 100644
--- a/assets/guide_instructs_global.md.f509fcc9.js
+++ b/assets/guide_instructs_global.md.cc3b804e.js
@@ -1,4 +1,4 @@
-import{_ as a,o as n,c as l,O as p}from"./chunks/framework.58a9e095.js";const d=JSON.parse('{"title":"通用指令","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/global.md","filePath":"guide/instructs/global.md","lastUpdated":1730861693000}'),o={name:"guide/instructs/global.md"};function e(t,s,c,r,i,y){return n(),l("div",null,s[0]||(s[0]=[p(`

通用指令

常用的轻量指令

execJavaScript(script)

执行指定JavaScript脚本, 这里执行脚本将在页面环境内执行,并且锁定在当前操作的页面对象中或iframe中。

js
await execJavaScript(\`alert('hello ,word !')\`)
+import{_ as a,o as n,c as l,O as p}from"./chunks/framework.58a9e095.js";const d=JSON.parse('{"title":"通用指令","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/global.md","filePath":"guide/instructs/global.md","lastUpdated":1731396361000}'),o={name:"guide/instructs/global.md"};function e(t,s,c,r,i,y){return n(),l("div",null,s[0]||(s[0]=[p(`

通用指令

常用的轻量指令

execJavaScript(script)

执行指定JavaScript脚本, 这里执行脚本将在页面环境内执行,并且锁定在当前操作的页面对象中或iframe中。

js
await execJavaScript(\`alert('hello ,word !')\`)
 
 // 传递函数
 await execJavaScript(() => {
diff --git a/assets/guide_instructs_global.md.f509fcc9.lean.js b/assets/guide_instructs_global.md.cc3b804e.lean.js
similarity index 99%
rename from assets/guide_instructs_global.md.f509fcc9.lean.js
rename to assets/guide_instructs_global.md.cc3b804e.lean.js
index 098fd19..10df161 100644
--- a/assets/guide_instructs_global.md.f509fcc9.lean.js
+++ b/assets/guide_instructs_global.md.cc3b804e.lean.js
@@ -1,4 +1,4 @@
-import{_ as a,o as n,c as l,O as p}from"./chunks/framework.58a9e095.js";const d=JSON.parse('{"title":"通用指令","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/global.md","filePath":"guide/instructs/global.md","lastUpdated":1730861693000}'),o={name:"guide/instructs/global.md"};function e(t,s,c,r,i,y){return n(),l("div",null,s[0]||(s[0]=[p(`

通用指令

常用的轻量指令

execJavaScript(script)

执行指定JavaScript脚本, 这里执行脚本将在页面环境内执行,并且锁定在当前操作的页面对象中或iframe中。

js
await execJavaScript(\`alert('hello ,word !')\`)
+import{_ as a,o as n,c as l,O as p}from"./chunks/framework.58a9e095.js";const d=JSON.parse('{"title":"通用指令","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/global.md","filePath":"guide/instructs/global.md","lastUpdated":1731396361000}'),o={name:"guide/instructs/global.md"};function e(t,s,c,r,i,y){return n(),l("div",null,s[0]||(s[0]=[p(`

通用指令

常用的轻量指令

execJavaScript(script)

执行指定JavaScript脚本, 这里执行脚本将在页面环境内执行,并且锁定在当前操作的页面对象中或iframe中。

js
await execJavaScript(\`alert('hello ,word !')\`)
 
 // 传递函数
 await execJavaScript(() => {
diff --git a/assets/guide_instructs_img.md.f4f507a1.js b/assets/guide_instructs_img.md.7a8493d8.js
similarity index 97%
rename from assets/guide_instructs_img.md.f4f507a1.js
rename to assets/guide_instructs_img.md.7a8493d8.js
index 54cf4bd..72b9982 100644
--- a/assets/guide_instructs_img.md.f4f507a1.js
+++ b/assets/guide_instructs_img.md.7a8493d8.js
@@ -1,3 +1,3 @@
-import{_ as s,o as t,c as n,O as e}from"./chunks/framework.58a9e095.js";const m=JSON.parse('{"title":"img","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/img.md","filePath":"guide/instructs/img.md","lastUpdated":1730861693000}'),o={name:"guide/instructs/img.md"};function p(l,a,i,c,r,g){return t(),n("div",null,a[0]||(a[0]=[e(`

img

通过图像进行操作

img.click(imgPath)

通过图像进行点击, 会点击当前页面匹配的图像中心区域。基于sift实现

js
await img.click("https://storage.360buyimg.com/assert/baidu_btn.jpg") // 使用远程图片操作点击
+import{_ as s,o as t,c as n,O as e}from"./chunks/framework.58a9e095.js";const m=JSON.parse('{"title":"img","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/img.md","filePath":"guide/instructs/img.md","lastUpdated":1731396361000}'),o={name:"guide/instructs/img.md"};function p(l,a,i,c,r,g){return t(),n("div",null,a[0]||(a[0]=[e(`

img

通过图像进行操作

img.click(imgPath)

通过图像进行点击, 会点击当前页面匹配的图像中心区域。基于sift实现

js
await img.click("https://storage.360buyimg.com/assert/baidu_btn.jpg") // 使用远程图片操作点击
 await img.click("/use/app/baidu_btn.jpg") // 使用本地图像点击
await img.click("https://storage.360buyimg.com/assert/baidu_btn.jpg") // 使用远程图片操作点击
 await img.click("/use/app/baidu_btn.jpg") // 使用本地图像点击
`,5)]))}const u=s(o,[["render",p]]);export{m as __pageData,u as default}; diff --git a/assets/guide_instructs_img.md.f4f507a1.lean.js b/assets/guide_instructs_img.md.7a8493d8.lean.js similarity index 97% rename from assets/guide_instructs_img.md.f4f507a1.lean.js rename to assets/guide_instructs_img.md.7a8493d8.lean.js index 54cf4bd..72b9982 100644 --- a/assets/guide_instructs_img.md.f4f507a1.lean.js +++ b/assets/guide_instructs_img.md.7a8493d8.lean.js @@ -1,3 +1,3 @@ -import{_ as s,o as t,c as n,O as e}from"./chunks/framework.58a9e095.js";const m=JSON.parse('{"title":"img","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/img.md","filePath":"guide/instructs/img.md","lastUpdated":1730861693000}'),o={name:"guide/instructs/img.md"};function p(l,a,i,c,r,g){return t(),n("div",null,a[0]||(a[0]=[e(`

img

通过图像进行操作

img.click(imgPath)

通过图像进行点击, 会点击当前页面匹配的图像中心区域。基于sift实现

js
await img.click("https://storage.360buyimg.com/assert/baidu_btn.jpg") // 使用远程图片操作点击
+import{_ as s,o as t,c as n,O as e}from"./chunks/framework.58a9e095.js";const m=JSON.parse('{"title":"img","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/img.md","filePath":"guide/instructs/img.md","lastUpdated":1731396361000}'),o={name:"guide/instructs/img.md"};function p(l,a,i,c,r,g){return t(),n("div",null,a[0]||(a[0]=[e(`

img

通过图像进行操作

img.click(imgPath)

通过图像进行点击, 会点击当前页面匹配的图像中心区域。基于sift实现

js
await img.click("https://storage.360buyimg.com/assert/baidu_btn.jpg") // 使用远程图片操作点击
 await img.click("/use/app/baidu_btn.jpg") // 使用本地图像点击
await img.click("https://storage.360buyimg.com/assert/baidu_btn.jpg") // 使用远程图片操作点击
 await img.click("/use/app/baidu_btn.jpg") // 使用本地图像点击
`,5)]))}const u=s(o,[["render",p]]);export{m as __pageData,u as default}; diff --git a/assets/guide_instructs_keyboard.md.30e83a47.js b/assets/guide_instructs_keyboard.md.49337e42.js similarity index 98% rename from assets/guide_instructs_keyboard.md.30e83a47.js rename to assets/guide_instructs_keyboard.md.49337e42.js index dd0d37a..518194e 100644 --- a/assets/guide_instructs_keyboard.md.30e83a47.js +++ b/assets/guide_instructs_keyboard.md.49337e42.js @@ -1 +1 @@ -import{_ as s,o as e,c as o,O as t}from"./chunks/framework.58a9e095.js";const k=JSON.parse('{"title":"keyboard","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/keyboard.md","filePath":"guide/instructs/keyboard.md","lastUpdated":1730861693000}'),l={name:"guide/instructs/keyboard.md"};function p(n,a,r,d,c,y){return e(),o("div",null,a[0]||(a[0]=[t('

keyboard

使用键盘对页面进行操作

keyboard.press(keyCode)

模拟点击键盘。

js
await keyboard.press('KeyA')  // 模拟点击键盘a键
await keyboard.press('KeyA')  // 模拟点击键盘a键

keyboard.down(keyCode)

模拟按下键盘。

js
await keyboard.down('ControlLeft')  // 模拟按下
await keyboard.down('ControlLeft')  // 模拟按下

keyboard.up(keyCode)

模拟抬起键盘。

js
await keyboard.up('ControlLeft')  // 模拟键盘抬起
await keyboard.up('ControlLeft')  // 模拟键盘抬起

keyboard.type(keyCode)

模拟键盘输入。

js
await keyboard.type('hello word')  // 模拟输入,等同于使用 await set()
await keyboard.type('hello word')  // 模拟输入,等同于使用 await set()
',14)]))}const h=s(l,[["render",p]]);export{k as __pageData,h as default}; +import{_ as s,o as e,c as o,O as t}from"./chunks/framework.58a9e095.js";const k=JSON.parse('{"title":"keyboard","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/keyboard.md","filePath":"guide/instructs/keyboard.md","lastUpdated":1731396361000}'),l={name:"guide/instructs/keyboard.md"};function p(n,a,r,d,c,y){return e(),o("div",null,a[0]||(a[0]=[t('

keyboard

使用键盘对页面进行操作

keyboard.press(keyCode)

模拟点击键盘。

js
await keyboard.press('KeyA')  // 模拟点击键盘a键
await keyboard.press('KeyA')  // 模拟点击键盘a键

keyboard.down(keyCode)

模拟按下键盘。

js
await keyboard.down('ControlLeft')  // 模拟按下
await keyboard.down('ControlLeft')  // 模拟按下

keyboard.up(keyCode)

模拟抬起键盘。

js
await keyboard.up('ControlLeft')  // 模拟键盘抬起
await keyboard.up('ControlLeft')  // 模拟键盘抬起

keyboard.type(keyCode)

模拟键盘输入。

js
await keyboard.type('hello word')  // 模拟输入,等同于使用 await set()
await keyboard.type('hello word')  // 模拟输入,等同于使用 await set()
',14)]))}const h=s(l,[["render",p]]);export{k as __pageData,h as default}; diff --git a/assets/guide_instructs_keyboard.md.30e83a47.lean.js b/assets/guide_instructs_keyboard.md.49337e42.lean.js similarity index 98% rename from assets/guide_instructs_keyboard.md.30e83a47.lean.js rename to assets/guide_instructs_keyboard.md.49337e42.lean.js index dd0d37a..518194e 100644 --- a/assets/guide_instructs_keyboard.md.30e83a47.lean.js +++ b/assets/guide_instructs_keyboard.md.49337e42.lean.js @@ -1 +1 @@ -import{_ as s,o as e,c as o,O as t}from"./chunks/framework.58a9e095.js";const k=JSON.parse('{"title":"keyboard","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/keyboard.md","filePath":"guide/instructs/keyboard.md","lastUpdated":1730861693000}'),l={name:"guide/instructs/keyboard.md"};function p(n,a,r,d,c,y){return e(),o("div",null,a[0]||(a[0]=[t('

keyboard

使用键盘对页面进行操作

keyboard.press(keyCode)

模拟点击键盘。

js
await keyboard.press('KeyA')  // 模拟点击键盘a键
await keyboard.press('KeyA')  // 模拟点击键盘a键

keyboard.down(keyCode)

模拟按下键盘。

js
await keyboard.down('ControlLeft')  // 模拟按下
await keyboard.down('ControlLeft')  // 模拟按下

keyboard.up(keyCode)

模拟抬起键盘。

js
await keyboard.up('ControlLeft')  // 模拟键盘抬起
await keyboard.up('ControlLeft')  // 模拟键盘抬起

keyboard.type(keyCode)

模拟键盘输入。

js
await keyboard.type('hello word')  // 模拟输入,等同于使用 await set()
await keyboard.type('hello word')  // 模拟输入,等同于使用 await set()
',14)]))}const h=s(l,[["render",p]]);export{k as __pageData,h as default}; +import{_ as s,o as e,c as o,O as t}from"./chunks/framework.58a9e095.js";const k=JSON.parse('{"title":"keyboard","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/keyboard.md","filePath":"guide/instructs/keyboard.md","lastUpdated":1731396361000}'),l={name:"guide/instructs/keyboard.md"};function p(n,a,r,d,c,y){return e(),o("div",null,a[0]||(a[0]=[t('

keyboard

使用键盘对页面进行操作

keyboard.press(keyCode)

模拟点击键盘。

js
await keyboard.press('KeyA')  // 模拟点击键盘a键
await keyboard.press('KeyA')  // 模拟点击键盘a键

keyboard.down(keyCode)

模拟按下键盘。

js
await keyboard.down('ControlLeft')  // 模拟按下
await keyboard.down('ControlLeft')  // 模拟按下

keyboard.up(keyCode)

模拟抬起键盘。

js
await keyboard.up('ControlLeft')  // 模拟键盘抬起
await keyboard.up('ControlLeft')  // 模拟键盘抬起

keyboard.type(keyCode)

模拟键盘输入。

js
await keyboard.type('hello word')  // 模拟输入,等同于使用 await set()
await keyboard.type('hello word')  // 模拟输入,等同于使用 await set()
',14)]))}const h=s(l,[["render",p]]);export{k as __pageData,h as default}; diff --git a/assets/guide_instructs_mouse.md.da223a7b.js b/assets/guide_instructs_mouse.md.6a54335d.js similarity index 98% rename from assets/guide_instructs_mouse.md.da223a7b.js rename to assets/guide_instructs_mouse.md.6a54335d.js index 1968638..112f50a 100644 --- a/assets/guide_instructs_mouse.md.da223a7b.js +++ b/assets/guide_instructs_mouse.md.6a54335d.js @@ -1,4 +1,4 @@ -import{_ as a,o as n,c as o,O as l}from"./chunks/framework.58a9e095.js";const E=JSON.parse('{"title":"mouse","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/mouse.md","filePath":"guide/instructs/mouse.md","lastUpdated":1730861693000}'),p={name:"guide/instructs/mouse.md"};function e(t,s,c,r,i,y){return n(),o("div",null,s[0]||(s[0]=[l(`

mouse

使用鼠标对页面进行操作

mouse.down(options:{button?: string;clickCount?: number;})

用于模拟鼠标按下事件,默认值:button = 'left', clickCount = 1。

js
await mouse.down()  // 模拟鼠标按下
+import{_ as a,o as n,c as o,O as l}from"./chunks/framework.58a9e095.js";const E=JSON.parse('{"title":"mouse","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/mouse.md","filePath":"guide/instructs/mouse.md","lastUpdated":1731396361000}'),p={name:"guide/instructs/mouse.md"};function e(t,s,c,r,i,y){return n(),o("div",null,s[0]||(s[0]=[l(`

mouse

使用鼠标对页面进行操作

mouse.down(options:{button?: string;clickCount?: number;})

用于模拟鼠标按下事件,默认值:button = 'left', clickCount = 1。

js
await mouse.down()  // 模拟鼠标按下
 // 鼠标移动到x,y位置点击右键,需web页面支持鼠标右键操作
 await mouse.move(x,y)
 await mouse.down({button:"right"})
diff --git a/assets/guide_instructs_mouse.md.da223a7b.lean.js b/assets/guide_instructs_mouse.md.6a54335d.lean.js
similarity index 98%
rename from assets/guide_instructs_mouse.md.da223a7b.lean.js
rename to assets/guide_instructs_mouse.md.6a54335d.lean.js
index 1968638..112f50a 100644
--- a/assets/guide_instructs_mouse.md.da223a7b.lean.js
+++ b/assets/guide_instructs_mouse.md.6a54335d.lean.js
@@ -1,4 +1,4 @@
-import{_ as a,o as n,c as o,O as l}from"./chunks/framework.58a9e095.js";const E=JSON.parse('{"title":"mouse","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/mouse.md","filePath":"guide/instructs/mouse.md","lastUpdated":1730861693000}'),p={name:"guide/instructs/mouse.md"};function e(t,s,c,r,i,y){return n(),o("div",null,s[0]||(s[0]=[l(`

mouse

使用鼠标对页面进行操作

mouse.down(options:{button?: string;clickCount?: number;})

用于模拟鼠标按下事件,默认值:button = 'left', clickCount = 1。

js
await mouse.down()  // 模拟鼠标按下
+import{_ as a,o as n,c as o,O as l}from"./chunks/framework.58a9e095.js";const E=JSON.parse('{"title":"mouse","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/mouse.md","filePath":"guide/instructs/mouse.md","lastUpdated":1731396361000}'),p={name:"guide/instructs/mouse.md"};function e(t,s,c,r,i,y){return n(),o("div",null,s[0]||(s[0]=[l(`

mouse

使用鼠标对页面进行操作

mouse.down(options:{button?: string;clickCount?: number;})

用于模拟鼠标按下事件,默认值:button = 'left', clickCount = 1。

js
await mouse.down()  // 模拟鼠标按下
 // 鼠标移动到x,y位置点击右键,需web页面支持鼠标右键操作
 await mouse.move(x,y)
 await mouse.down({button:"right"})
diff --git a/assets/guide_instructs_page.md.1f787bd3.js b/assets/guide_instructs_page.md.a70f8924.js
similarity index 99%
rename from assets/guide_instructs_page.md.1f787bd3.js
rename to assets/guide_instructs_page.md.a70f8924.js
index 69c5de4..6d03a9e 100644
--- a/assets/guide_instructs_page.md.1f787bd3.js
+++ b/assets/guide_instructs_page.md.a70f8924.js
@@ -1,4 +1,4 @@
-import{_ as a,o as n,c as p,O as o}from"./chunks/framework.58a9e095.js";const d=JSON.parse('{"title":"page","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/page.md","filePath":"guide/instructs/page.md","lastUpdated":1730861693000}'),l={name:"guide/instructs/page.md"};function e(t,s,c,r,i,y){return n(),p("div",null,s[0]||(s[0]=[o(`

page

页面类,包含对页面的操作、比如进入、刷新、返回、设置页面模拟等。

page.setViewSize(width,height)

设置页面视图宽高,可用于在运行时动态修改。

js
await page.setViewSize(200,400) // 设置页面视图大小为宽200高400
await page.setViewSize(200,400) // 设置页面视图大小为宽200高400

page.setDevice(name:string)

设置页面设备模拟, 注意需要在页面创建前设置,否则只在之后创建的页面生效.

更多可用设备名称

js
await page.setDevice('iPhone 11') // 模拟iPhone 11 访问
await page.setDevice('iPhone 11') // 模拟iPhone 11 访问

page.create(url:string)

创建新页面打开网页, 传入标准的url格式

js
await page.create('https://www.baidu.com') // 打开百度页面
await page.create('https://www.baidu.com') // 打开百度页面

page.waitPopup()

将页面上下文切换至弹出的新窗口中

js
  await dom.click("#pageOpen") // 该点击操作将启动新窗口
+import{_ as a,o as n,c as p,O as o}from"./chunks/framework.58a9e095.js";const d=JSON.parse('{"title":"page","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/page.md","filePath":"guide/instructs/page.md","lastUpdated":1731396361000}'),l={name:"guide/instructs/page.md"};function e(t,s,c,r,i,y){return n(),p("div",null,s[0]||(s[0]=[o(`

page

页面类,包含对页面的操作、比如进入、刷新、返回、设置页面模拟等。

page.setViewSize(width,height)

设置页面视图宽高,可用于在运行时动态修改。

js
await page.setViewSize(200,400) // 设置页面视图大小为宽200高400
await page.setViewSize(200,400) // 设置页面视图大小为宽200高400

page.setDevice(name:string)

设置页面设备模拟, 注意需要在页面创建前设置,否则只在之后创建的页面生效.

更多可用设备名称

js
await page.setDevice('iPhone 11') // 模拟iPhone 11 访问
await page.setDevice('iPhone 11') // 模拟iPhone 11 访问

page.create(url:string)

创建新页面打开网页, 传入标准的url格式

js
await page.create('https://www.baidu.com') // 打开百度页面
await page.create('https://www.baidu.com') // 打开百度页面

page.waitPopup()

将页面上下文切换至弹出的新窗口中

js
  await dom.click("#pageOpen") // 该点击操作将启动新窗口
   await page.waitPopup() // 将上下文切换至最近打开的窗口中
   // 后续操作将在新窗口中进行
   await dom.fill("#id","123")
  await dom.click("#pageOpen") // 该点击操作将启动新窗口
diff --git a/assets/guide_instructs_page.md.1f787bd3.lean.js b/assets/guide_instructs_page.md.a70f8924.lean.js
similarity index 99%
rename from assets/guide_instructs_page.md.1f787bd3.lean.js
rename to assets/guide_instructs_page.md.a70f8924.lean.js
index 69c5de4..6d03a9e 100644
--- a/assets/guide_instructs_page.md.1f787bd3.lean.js
+++ b/assets/guide_instructs_page.md.a70f8924.lean.js
@@ -1,4 +1,4 @@
-import{_ as a,o as n,c as p,O as o}from"./chunks/framework.58a9e095.js";const d=JSON.parse('{"title":"page","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/page.md","filePath":"guide/instructs/page.md","lastUpdated":1730861693000}'),l={name:"guide/instructs/page.md"};function e(t,s,c,r,i,y){return n(),p("div",null,s[0]||(s[0]=[o(`

page

页面类,包含对页面的操作、比如进入、刷新、返回、设置页面模拟等。

page.setViewSize(width,height)

设置页面视图宽高,可用于在运行时动态修改。

js
await page.setViewSize(200,400) // 设置页面视图大小为宽200高400
await page.setViewSize(200,400) // 设置页面视图大小为宽200高400

page.setDevice(name:string)

设置页面设备模拟, 注意需要在页面创建前设置,否则只在之后创建的页面生效.

更多可用设备名称

js
await page.setDevice('iPhone 11') // 模拟iPhone 11 访问
await page.setDevice('iPhone 11') // 模拟iPhone 11 访问

page.create(url:string)

创建新页面打开网页, 传入标准的url格式

js
await page.create('https://www.baidu.com') // 打开百度页面
await page.create('https://www.baidu.com') // 打开百度页面

page.waitPopup()

将页面上下文切换至弹出的新窗口中

js
  await dom.click("#pageOpen") // 该点击操作将启动新窗口
+import{_ as a,o as n,c as p,O as o}from"./chunks/framework.58a9e095.js";const d=JSON.parse('{"title":"page","description":"","frontmatter":{},"headers":[],"relativePath":"guide/instructs/page.md","filePath":"guide/instructs/page.md","lastUpdated":1731396361000}'),l={name:"guide/instructs/page.md"};function e(t,s,c,r,i,y){return n(),p("div",null,s[0]||(s[0]=[o(`

page

页面类,包含对页面的操作、比如进入、刷新、返回、设置页面模拟等。

page.setViewSize(width,height)

设置页面视图宽高,可用于在运行时动态修改。

js
await page.setViewSize(200,400) // 设置页面视图大小为宽200高400
await page.setViewSize(200,400) // 设置页面视图大小为宽200高400

page.setDevice(name:string)

设置页面设备模拟, 注意需要在页面创建前设置,否则只在之后创建的页面生效.

更多可用设备名称

js
await page.setDevice('iPhone 11') // 模拟iPhone 11 访问
await page.setDevice('iPhone 11') // 模拟iPhone 11 访问

page.create(url:string)

创建新页面打开网页, 传入标准的url格式

js
await page.create('https://www.baidu.com') // 打开百度页面
await page.create('https://www.baidu.com') // 打开百度页面

page.waitPopup()

将页面上下文切换至弹出的新窗口中

js
  await dom.click("#pageOpen") // 该点击操作将启动新窗口
   await page.waitPopup() // 将上下文切换至最近打开的窗口中
   // 后续操作将在新窗口中进行
   await dom.fill("#id","123")
  await dom.click("#pageOpen") // 该点击操作将启动新窗口
diff --git a/assets/guide_introduce_download.md.de784c45.js b/assets/guide_introduce_download.md.c2717140.js
similarity index 98%
rename from assets/guide_introduce_download.md.de784c45.js
rename to assets/guide_introduce_download.md.c2717140.js
index 29e3435..bd14fd3 100644
--- a/assets/guide_introduce_download.md.de784c45.js
+++ b/assets/guide_introduce_download.md.c2717140.js
@@ -1 +1 @@
-import{_ as t,o as l,c as d,O as a,k as r,t as i}from"./chunks/framework.58a9e095.js";const f=JSON.parse('{"title":"下载","description":"","frontmatter":{"version":"2.0.7","editLink":true},"headers":[],"relativePath":"guide/introduce/download.md","filePath":"guide/introduce/download.md","lastUpdated":1730861693000}'),n={name:"guide/introduce/download.md"},s=["href"],c=["href"];function p(o,e,h,m,b,u){return l(),d("div",null,[e[0]||(e[0]=a('

下载

介绍

YinTao 提供安装包,双击即可完整一键下载。

下载地址

',4)),r("p",null,[r("a",{style:{display:"inline-block","font-size":"1rem",color:"rgb(255, 255, 255)","background-color":"rgb(62, 175, 124)",padding:"0.4rem 1.2rem","border-radius":"4px",transition:"background-color 0.1s ease 0s","":"box-sizing: border-box","border-bottom":"1px solid rgb(56, 157, 112)"},href:"https://storage.jd.com/assert/yintao-"+o.$frontmatter.version+".dmg"},"YinTao-"+i(o.$frontmatter.version)+" MAC下载",9,s)]),r("p",null,[r("a",{style:{"margin-top":"0.2rem",display:"inline-block","font-size":"1rem",color:"rgb(255, 255, 255)","background-color":"rgb(62, 175, 124)",padding:"0.4rem 1.2rem","border-radius":"4px",transition:"background-color 0.1s ease 0s","box-sizing":"border-box","border-bottom":"1px solid rgb(56, 157, 112)"},href:"https://storage.jd.com/assert/YinTaoSetup-"+o.$frontmatter.version+".exe"},"YinTao-"+i(o.$frontmatter.version)+" WINDOW下载",9,c)]),e[1]||(e[1]=a('

历史版本下载

更新公告

v2.0.1版本更新:

  1. 修复pago.to未重制执行上下文问题
  2. page.screenshot 命令调整当输入未文件名称时(例:"nihao.jpg"),自动存放至临时目录中,以保障跨终端兼容。

v2.0.0版本更新(重大更新):

  1. 底层架构重大重组(不影响历史脚本执行)

v1.1.7版本更新:

  1. 新增page.hasText指令,用于快速检测页面文本的内容
  2. 调整page.setBrowserCofing 优先级为顺序优先级,更易理解。
  3. 优化dom.exist 已支持timeout
  4. 修复程序在winodws中,长脚本导致无法执行的问题。
  5. 增加dragTo 指令,方便实现拖拽

v1.1.6版本更新:

  1. 修复实时日志标识问题,回复实时日志展示功能。

v1.1.5版本更新:

  1. 增加追踪功能..
  2. 增加元素截图dom.screenshot指令,优化page.screenshot 实现方式
  3. 添加env环境变量读取, 通过env变量使用
  4. 增加ai错误堆栈指导,协助定位问题。
  5. 历史部分bug修复..
',12))])}const k=t(n,[["render",p]]);export{f as __pageData,k as default}; +import{_ as t,o as l,c as d,O as a,k as r,t as i}from"./chunks/framework.58a9e095.js";const f=JSON.parse('{"title":"下载","description":"","frontmatter":{"version":"2.0.7","editLink":true},"headers":[],"relativePath":"guide/introduce/download.md","filePath":"guide/introduce/download.md","lastUpdated":1731396361000}'),n={name:"guide/introduce/download.md"},s=["href"],c=["href"];function p(o,e,h,m,b,u){return l(),d("div",null,[e[0]||(e[0]=a('

下载

介绍

YinTao 提供安装包,双击即可完整一键下载。

下载地址

',4)),r("p",null,[r("a",{style:{display:"inline-block","font-size":"1rem",color:"rgb(255, 255, 255)","background-color":"rgb(62, 175, 124)",padding:"0.4rem 1.2rem","border-radius":"4px",transition:"background-color 0.1s ease 0s","":"box-sizing: border-box","border-bottom":"1px solid rgb(56, 157, 112)"},href:"https://storage.jd.com/assert/yintao-"+o.$frontmatter.version+".dmg"},"YinTao-"+i(o.$frontmatter.version)+" MAC下载",9,s)]),r("p",null,[r("a",{style:{"margin-top":"0.2rem",display:"inline-block","font-size":"1rem",color:"rgb(255, 255, 255)","background-color":"rgb(62, 175, 124)",padding:"0.4rem 1.2rem","border-radius":"4px",transition:"background-color 0.1s ease 0s","box-sizing":"border-box","border-bottom":"1px solid rgb(56, 157, 112)"},href:"https://storage.jd.com/assert/YinTaoSetup-"+o.$frontmatter.version+".exe"},"YinTao-"+i(o.$frontmatter.version)+" WINDOW下载",9,c)]),e[1]||(e[1]=a('

历史版本下载

更新公告

v2.0.1版本更新:

  1. 修复pago.to未重制执行上下文问题
  2. page.screenshot 命令调整当输入未文件名称时(例:"nihao.jpg"),自动存放至临时目录中,以保障跨终端兼容。

v2.0.0版本更新(重大更新):

  1. 底层架构重大重组(不影响历史脚本执行)

v1.1.7版本更新:

  1. 新增page.hasText指令,用于快速检测页面文本的内容
  2. 调整page.setBrowserCofing 优先级为顺序优先级,更易理解。
  3. 优化dom.exist 已支持timeout
  4. 修复程序在winodws中,长脚本导致无法执行的问题。
  5. 增加dragTo 指令,方便实现拖拽

v1.1.6版本更新:

  1. 修复实时日志标识问题,回复实时日志展示功能。

v1.1.5版本更新:

  1. 增加追踪功能..
  2. 增加元素截图dom.screenshot指令,优化page.screenshot 实现方式
  3. 添加env环境变量读取, 通过env变量使用
  4. 增加ai错误堆栈指导,协助定位问题。
  5. 历史部分bug修复..
',12))])}const k=t(n,[["render",p]]);export{f as __pageData,k as default}; diff --git a/assets/guide_introduce_download.md.de784c45.lean.js b/assets/guide_introduce_download.md.c2717140.lean.js similarity index 98% rename from assets/guide_introduce_download.md.de784c45.lean.js rename to assets/guide_introduce_download.md.c2717140.lean.js index 29e3435..bd14fd3 100644 --- a/assets/guide_introduce_download.md.de784c45.lean.js +++ b/assets/guide_introduce_download.md.c2717140.lean.js @@ -1 +1 @@ -import{_ as t,o as l,c as d,O as a,k as r,t as i}from"./chunks/framework.58a9e095.js";const f=JSON.parse('{"title":"下载","description":"","frontmatter":{"version":"2.0.7","editLink":true},"headers":[],"relativePath":"guide/introduce/download.md","filePath":"guide/introduce/download.md","lastUpdated":1730861693000}'),n={name:"guide/introduce/download.md"},s=["href"],c=["href"];function p(o,e,h,m,b,u){return l(),d("div",null,[e[0]||(e[0]=a('

下载

介绍

YinTao 提供安装包,双击即可完整一键下载。

下载地址

',4)),r("p",null,[r("a",{style:{display:"inline-block","font-size":"1rem",color:"rgb(255, 255, 255)","background-color":"rgb(62, 175, 124)",padding:"0.4rem 1.2rem","border-radius":"4px",transition:"background-color 0.1s ease 0s","":"box-sizing: border-box","border-bottom":"1px solid rgb(56, 157, 112)"},href:"https://storage.jd.com/assert/yintao-"+o.$frontmatter.version+".dmg"},"YinTao-"+i(o.$frontmatter.version)+" MAC下载",9,s)]),r("p",null,[r("a",{style:{"margin-top":"0.2rem",display:"inline-block","font-size":"1rem",color:"rgb(255, 255, 255)","background-color":"rgb(62, 175, 124)",padding:"0.4rem 1.2rem","border-radius":"4px",transition:"background-color 0.1s ease 0s","box-sizing":"border-box","border-bottom":"1px solid rgb(56, 157, 112)"},href:"https://storage.jd.com/assert/YinTaoSetup-"+o.$frontmatter.version+".exe"},"YinTao-"+i(o.$frontmatter.version)+" WINDOW下载",9,c)]),e[1]||(e[1]=a('

历史版本下载

更新公告

v2.0.1版本更新:

  1. 修复pago.to未重制执行上下文问题
  2. page.screenshot 命令调整当输入未文件名称时(例:"nihao.jpg"),自动存放至临时目录中,以保障跨终端兼容。

v2.0.0版本更新(重大更新):

  1. 底层架构重大重组(不影响历史脚本执行)

v1.1.7版本更新:

  1. 新增page.hasText指令,用于快速检测页面文本的内容
  2. 调整page.setBrowserCofing 优先级为顺序优先级,更易理解。
  3. 优化dom.exist 已支持timeout
  4. 修复程序在winodws中,长脚本导致无法执行的问题。
  5. 增加dragTo 指令,方便实现拖拽

v1.1.6版本更新:

  1. 修复实时日志标识问题,回复实时日志展示功能。

v1.1.5版本更新:

  1. 增加追踪功能..
  2. 增加元素截图dom.screenshot指令,优化page.screenshot 实现方式
  3. 添加env环境变量读取, 通过env变量使用
  4. 增加ai错误堆栈指导,协助定位问题。
  5. 历史部分bug修复..
',12))])}const k=t(n,[["render",p]]);export{f as __pageData,k as default}; +import{_ as t,o as l,c as d,O as a,k as r,t as i}from"./chunks/framework.58a9e095.js";const f=JSON.parse('{"title":"下载","description":"","frontmatter":{"version":"2.0.7","editLink":true},"headers":[],"relativePath":"guide/introduce/download.md","filePath":"guide/introduce/download.md","lastUpdated":1731396361000}'),n={name:"guide/introduce/download.md"},s=["href"],c=["href"];function p(o,e,h,m,b,u){return l(),d("div",null,[e[0]||(e[0]=a('

下载

介绍

YinTao 提供安装包,双击即可完整一键下载。

下载地址

',4)),r("p",null,[r("a",{style:{display:"inline-block","font-size":"1rem",color:"rgb(255, 255, 255)","background-color":"rgb(62, 175, 124)",padding:"0.4rem 1.2rem","border-radius":"4px",transition:"background-color 0.1s ease 0s","":"box-sizing: border-box","border-bottom":"1px solid rgb(56, 157, 112)"},href:"https://storage.jd.com/assert/yintao-"+o.$frontmatter.version+".dmg"},"YinTao-"+i(o.$frontmatter.version)+" MAC下载",9,s)]),r("p",null,[r("a",{style:{"margin-top":"0.2rem",display:"inline-block","font-size":"1rem",color:"rgb(255, 255, 255)","background-color":"rgb(62, 175, 124)",padding:"0.4rem 1.2rem","border-radius":"4px",transition:"background-color 0.1s ease 0s","box-sizing":"border-box","border-bottom":"1px solid rgb(56, 157, 112)"},href:"https://storage.jd.com/assert/YinTaoSetup-"+o.$frontmatter.version+".exe"},"YinTao-"+i(o.$frontmatter.version)+" WINDOW下载",9,c)]),e[1]||(e[1]=a('

历史版本下载

更新公告

v2.0.1版本更新:

  1. 修复pago.to未重制执行上下文问题
  2. page.screenshot 命令调整当输入未文件名称时(例:"nihao.jpg"),自动存放至临时目录中,以保障跨终端兼容。

v2.0.0版本更新(重大更新):

  1. 底层架构重大重组(不影响历史脚本执行)

v1.1.7版本更新:

  1. 新增page.hasText指令,用于快速检测页面文本的内容
  2. 调整page.setBrowserCofing 优先级为顺序优先级,更易理解。
  3. 优化dom.exist 已支持timeout
  4. 修复程序在winodws中,长脚本导致无法执行的问题。
  5. 增加dragTo 指令,方便实现拖拽

v1.1.6版本更新:

  1. 修复实时日志标识问题,回复实时日志展示功能。

v1.1.5版本更新:

  1. 增加追踪功能..
  2. 增加元素截图dom.screenshot指令,优化page.screenshot 实现方式
  3. 添加env环境变量读取, 通过env变量使用
  4. 增加ai错误堆栈指导,协助定位问题。
  5. 历史部分bug修复..
',12))])}const k=t(n,[["render",p]]);export{f as __pageData,k as default}; diff --git a/assets/guide_introduce_history.md.a68dc1ee.js b/assets/guide_introduce_history.md.ee9ba7fd.js similarity index 96% rename from assets/guide_introduce_history.md.a68dc1ee.js rename to assets/guide_introduce_history.md.ee9ba7fd.js index a12c715..63089b7 100644 --- a/assets/guide_introduce_history.md.a68dc1ee.js +++ b/assets/guide_introduce_history.md.ee9ba7fd.js @@ -1 +1 @@ -import{o as r,c as n,O as i,F as d,B as l,k as s,t as a,a as p,e as u}from"./chunks/framework.58a9e095.js";const v={key:0},c=["href"],m=["href"],y=JSON.parse('{"title":"历史版本","description":"","frontmatter":{},"headers":[],"relativePath":"guide/introduce/history.md","filePath":"guide/introduce/history.md","lastUpdated":1730861693000}'),h={name:"guide/introduce/history.md"},_=Object.assign(h,{setup(g){const o=[{desc:"",version:"2.0.4"},{desc:"",version:"2.0.2"},{desc:"",version:"2.0.0"},{desc:"deepTest录制推荐版本",version:"1.1.7"}];return(f,e)=>(r(),n("div",null,[e[4]||(e[4]=i('

历史版本

v2.0.7

版本描述: 历史问题修复: 修复未使用安装附录浏览器问题!
win系统:YinTao-2.0.7.exe
',2)),(r(),n(d,null,l(o,t=>s("div",null,[s("h3",null,"v"+a(t.version),1),t.desc?(r(),n("div",v,[e[0]||(e[0]=s("span",null,"版本描述:",-1)),e[1]||(e[1]=p()),s("i",null,a(t.desc),1)])):u("",!0),e[3]||(e[3]=s("span",null,"win系统:",-1)),s("a",{href:`http://storage.jd.local/assert/cherrySetup-${t.version}.exe`},"YinTao-"+a(t.version)+".exe",9,c),s("div",null,[e[2]||(e[2]=s("span",null,"mac系统:",-1)),s("a",{href:`http://storage.jd.local/assert/cherry-${t.version}.dmg`},"YinTao-"+a(t.version)+".dmg",9,m)])])),64))]))}});export{y as __pageData,_ as default}; +import{o as r,c as n,O as i,F as d,B as l,k as s,t as a,a as p,e as u}from"./chunks/framework.58a9e095.js";const v={key:0},c=["href"],m=["href"],y=JSON.parse('{"title":"历史版本","description":"","frontmatter":{},"headers":[],"relativePath":"guide/introduce/history.md","filePath":"guide/introduce/history.md","lastUpdated":1731396361000}'),h={name:"guide/introduce/history.md"},_=Object.assign(h,{setup(g){const o=[{desc:"",version:"2.0.4"},{desc:"",version:"2.0.2"},{desc:"",version:"2.0.0"},{desc:"deepTest录制推荐版本",version:"1.1.7"}];return(f,e)=>(r(),n("div",null,[e[4]||(e[4]=i('

历史版本

v2.0.7

版本描述: 历史问题修复: 修复未使用安装附录浏览器问题!
win系统:YinTao-2.0.7.exe
',2)),(r(),n(d,null,l(o,t=>s("div",null,[s("h3",null,"v"+a(t.version),1),t.desc?(r(),n("div",v,[e[0]||(e[0]=s("span",null,"版本描述:",-1)),e[1]||(e[1]=p()),s("i",null,a(t.desc),1)])):u("",!0),e[3]||(e[3]=s("span",null,"win系统:",-1)),s("a",{href:`http://storage.jd.local/assert/cherrySetup-${t.version}.exe`},"YinTao-"+a(t.version)+".exe",9,c),s("div",null,[e[2]||(e[2]=s("span",null,"mac系统:",-1)),s("a",{href:`http://storage.jd.local/assert/cherry-${t.version}.dmg`},"YinTao-"+a(t.version)+".dmg",9,m)])])),64))]))}});export{y as __pageData,_ as default}; diff --git a/assets/guide_introduce_history.md.a68dc1ee.lean.js b/assets/guide_introduce_history.md.ee9ba7fd.lean.js similarity index 96% rename from assets/guide_introduce_history.md.a68dc1ee.lean.js rename to assets/guide_introduce_history.md.ee9ba7fd.lean.js index a12c715..63089b7 100644 --- a/assets/guide_introduce_history.md.a68dc1ee.lean.js +++ b/assets/guide_introduce_history.md.ee9ba7fd.lean.js @@ -1 +1 @@ -import{o as r,c as n,O as i,F as d,B as l,k as s,t as a,a as p,e as u}from"./chunks/framework.58a9e095.js";const v={key:0},c=["href"],m=["href"],y=JSON.parse('{"title":"历史版本","description":"","frontmatter":{},"headers":[],"relativePath":"guide/introduce/history.md","filePath":"guide/introduce/history.md","lastUpdated":1730861693000}'),h={name:"guide/introduce/history.md"},_=Object.assign(h,{setup(g){const o=[{desc:"",version:"2.0.4"},{desc:"",version:"2.0.2"},{desc:"",version:"2.0.0"},{desc:"deepTest录制推荐版本",version:"1.1.7"}];return(f,e)=>(r(),n("div",null,[e[4]||(e[4]=i('

历史版本

v2.0.7

版本描述: 历史问题修复: 修复未使用安装附录浏览器问题!
win系统:YinTao-2.0.7.exe
',2)),(r(),n(d,null,l(o,t=>s("div",null,[s("h3",null,"v"+a(t.version),1),t.desc?(r(),n("div",v,[e[0]||(e[0]=s("span",null,"版本描述:",-1)),e[1]||(e[1]=p()),s("i",null,a(t.desc),1)])):u("",!0),e[3]||(e[3]=s("span",null,"win系统:",-1)),s("a",{href:`http://storage.jd.local/assert/cherrySetup-${t.version}.exe`},"YinTao-"+a(t.version)+".exe",9,c),s("div",null,[e[2]||(e[2]=s("span",null,"mac系统:",-1)),s("a",{href:`http://storage.jd.local/assert/cherry-${t.version}.dmg`},"YinTao-"+a(t.version)+".dmg",9,m)])])),64))]))}});export{y as __pageData,_ as default}; +import{o as r,c as n,O as i,F as d,B as l,k as s,t as a,a as p,e as u}from"./chunks/framework.58a9e095.js";const v={key:0},c=["href"],m=["href"],y=JSON.parse('{"title":"历史版本","description":"","frontmatter":{},"headers":[],"relativePath":"guide/introduce/history.md","filePath":"guide/introduce/history.md","lastUpdated":1731396361000}'),h={name:"guide/introduce/history.md"},_=Object.assign(h,{setup(g){const o=[{desc:"",version:"2.0.4"},{desc:"",version:"2.0.2"},{desc:"",version:"2.0.0"},{desc:"deepTest录制推荐版本",version:"1.1.7"}];return(f,e)=>(r(),n("div",null,[e[4]||(e[4]=i('

历史版本

v2.0.7

版本描述: 历史问题修复: 修复未使用安装附录浏览器问题!
win系统:YinTao-2.0.7.exe
',2)),(r(),n(d,null,l(o,t=>s("div",null,[s("h3",null,"v"+a(t.version),1),t.desc?(r(),n("div",v,[e[0]||(e[0]=s("span",null,"版本描述:",-1)),e[1]||(e[1]=p()),s("i",null,a(t.desc),1)])):u("",!0),e[3]||(e[3]=s("span",null,"win系统:",-1)),s("a",{href:`http://storage.jd.local/assert/cherrySetup-${t.version}.exe`},"YinTao-"+a(t.version)+".exe",9,c),s("div",null,[e[2]||(e[2]=s("span",null,"mac系统:",-1)),s("a",{href:`http://storage.jd.local/assert/cherry-${t.version}.dmg`},"YinTao-"+a(t.version)+".dmg",9,m)])])),64))]))}});export{y as __pageData,_ as default}; diff --git a/assets/guide_introduce_introduce.md.735daef4.js b/assets/guide_introduce_introduce.md.c9292364.js similarity index 97% rename from assets/guide_introduce_introduce.md.735daef4.js rename to assets/guide_introduce_introduce.md.c9292364.js index 026d295..5bab4f3 100644 --- a/assets/guide_introduce_introduce.md.735daef4.js +++ b/assets/guide_introduce_introduce.md.c9292364.js @@ -1 +1 @@ -import{_ as a,o as r,c as o,O as t}from"./chunks/framework.58a9e095.js";const s=JSON.parse('{"title":"简介","description":"","frontmatter":{},"headers":[],"relativePath":"guide/introduce/introduce.md","filePath":"guide/introduce/introduce.md","lastUpdated":1730861693000}'),i={name:"guide/introduce/introduce.md"};function n(d,e,c,l,h,u){return r(),o("div",null,e[0]||(e[0]=[t('

简介

    YinTao致力于打造简单、轻量、易部署的自动化浏览器引擎。它通过简单的脚本,丰富的指令、api提供强劲可控的自动化体验。并支持用户以浏览器插件的形式自定义引擎部分功能,简单快捷的进行自动化项目开发。

立即体验

点击这里立即体验YinTao在线预览版

项目介绍

     适用于自动化框架开发、数据爬虫处理、自动化脚本辅助,专注于解决ui自动化上手难,成本高,部署复杂难以在实际项目当中落地等问题,通过结合Chromium 二次封装引擎重构开发出YinTao 达到从底层高度定制,智能判定,定制语法的自动化测试引擎。实现了批量运行,无痕启动,定时运行,智能录制,一键安装等核心功能,同时支持服务端远程部署,多语言脚本支持。

开源

     YinTao是一款开源的软件, 我们希望和用户一起分享,建设。 如果你希望它变得更好,我们需要您的加入。

  • YinTao 客户端程序,提供上级通用包装器。 YinTao
  • core 核心执行程序。 [core]
  • doc YinTao使用文档 doc

前往下载

欢迎下载体验,提出宝贵意见
更多项目请查看相关服务

',11)]))}const f=a(i,[["render",n]]);export{s as __pageData,f as default}; +import{_ as a,o as r,c as o,O as t}from"./chunks/framework.58a9e095.js";const s=JSON.parse('{"title":"简介","description":"","frontmatter":{},"headers":[],"relativePath":"guide/introduce/introduce.md","filePath":"guide/introduce/introduce.md","lastUpdated":1731396361000}'),i={name:"guide/introduce/introduce.md"};function n(d,e,c,l,h,u){return r(),o("div",null,e[0]||(e[0]=[t('

简介

    YinTao致力于打造简单、轻量、易部署的自动化浏览器引擎。它通过简单的脚本,丰富的指令、api提供强劲可控的自动化体验。并支持用户以浏览器插件的形式自定义引擎部分功能,简单快捷的进行自动化项目开发。

立即体验

点击这里立即体验YinTao在线预览版

项目介绍

     适用于自动化框架开发、数据爬虫处理、自动化脚本辅助,专注于解决ui自动化上手难,成本高,部署复杂难以在实际项目当中落地等问题,通过结合Chromium 二次封装引擎重构开发出YinTao 达到从底层高度定制,智能判定,定制语法的自动化测试引擎。实现了批量运行,无痕启动,定时运行,智能录制,一键安装等核心功能,同时支持服务端远程部署,多语言脚本支持。

开源

     YinTao是一款开源的软件, 我们希望和用户一起分享,建设。 如果你希望它变得更好,我们需要您的加入。

  • YinTao 客户端程序,提供上级通用包装器。 YinTao
  • core 核心执行程序。 [core]
  • doc YinTao使用文档 doc

前往下载

欢迎下载体验,提出宝贵意见
更多项目请查看相关服务

',11)]))}const f=a(i,[["render",n]]);export{s as __pageData,f as default}; diff --git a/assets/guide_introduce_introduce.md.735daef4.lean.js b/assets/guide_introduce_introduce.md.c9292364.lean.js similarity index 97% rename from assets/guide_introduce_introduce.md.735daef4.lean.js rename to assets/guide_introduce_introduce.md.c9292364.lean.js index 026d295..5bab4f3 100644 --- a/assets/guide_introduce_introduce.md.735daef4.lean.js +++ b/assets/guide_introduce_introduce.md.c9292364.lean.js @@ -1 +1 @@ -import{_ as a,o as r,c as o,O as t}from"./chunks/framework.58a9e095.js";const s=JSON.parse('{"title":"简介","description":"","frontmatter":{},"headers":[],"relativePath":"guide/introduce/introduce.md","filePath":"guide/introduce/introduce.md","lastUpdated":1730861693000}'),i={name:"guide/introduce/introduce.md"};function n(d,e,c,l,h,u){return r(),o("div",null,e[0]||(e[0]=[t('

简介

    YinTao致力于打造简单、轻量、易部署的自动化浏览器引擎。它通过简单的脚本,丰富的指令、api提供强劲可控的自动化体验。并支持用户以浏览器插件的形式自定义引擎部分功能,简单快捷的进行自动化项目开发。

立即体验

点击这里立即体验YinTao在线预览版

项目介绍

     适用于自动化框架开发、数据爬虫处理、自动化脚本辅助,专注于解决ui自动化上手难,成本高,部署复杂难以在实际项目当中落地等问题,通过结合Chromium 二次封装引擎重构开发出YinTao 达到从底层高度定制,智能判定,定制语法的自动化测试引擎。实现了批量运行,无痕启动,定时运行,智能录制,一键安装等核心功能,同时支持服务端远程部署,多语言脚本支持。

开源

     YinTao是一款开源的软件, 我们希望和用户一起分享,建设。 如果你希望它变得更好,我们需要您的加入。

  • YinTao 客户端程序,提供上级通用包装器。 YinTao
  • core 核心执行程序。 [core]
  • doc YinTao使用文档 doc

前往下载

欢迎下载体验,提出宝贵意见
更多项目请查看相关服务

',11)]))}const f=a(i,[["render",n]]);export{s as __pageData,f as default}; +import{_ as a,o as r,c as o,O as t}from"./chunks/framework.58a9e095.js";const s=JSON.parse('{"title":"简介","description":"","frontmatter":{},"headers":[],"relativePath":"guide/introduce/introduce.md","filePath":"guide/introduce/introduce.md","lastUpdated":1731396361000}'),i={name:"guide/introduce/introduce.md"};function n(d,e,c,l,h,u){return r(),o("div",null,e[0]||(e[0]=[t('

简介

    YinTao致力于打造简单、轻量、易部署的自动化浏览器引擎。它通过简单的脚本,丰富的指令、api提供强劲可控的自动化体验。并支持用户以浏览器插件的形式自定义引擎部分功能,简单快捷的进行自动化项目开发。

立即体验

点击这里立即体验YinTao在线预览版

项目介绍

     适用于自动化框架开发、数据爬虫处理、自动化脚本辅助,专注于解决ui自动化上手难,成本高,部署复杂难以在实际项目当中落地等问题,通过结合Chromium 二次封装引擎重构开发出YinTao 达到从底层高度定制,智能判定,定制语法的自动化测试引擎。实现了批量运行,无痕启动,定时运行,智能录制,一键安装等核心功能,同时支持服务端远程部署,多语言脚本支持。

开源

     YinTao是一款开源的软件, 我们希望和用户一起分享,建设。 如果你希望它变得更好,我们需要您的加入。

  • YinTao 客户端程序,提供上级通用包装器。 YinTao
  • core 核心执行程序。 [core]
  • doc YinTao使用文档 doc

前往下载

欢迎下载体验,提出宝贵意见
更多项目请查看相关服务

',11)]))}const f=a(i,[["render",n]]);export{s as __pageData,f as default}; diff --git a/assets/index.md.42a3be25.js b/assets/index.md.5a346fa3.js similarity index 97% rename from assets/index.md.42a3be25.js rename to assets/index.md.5a346fa3.js index ff8db73..6407e89 100644 --- a/assets/index.md.42a3be25.js +++ b/assets/index.md.5a346fa3.js @@ -1 +1 @@ -import{_ as e,o as r,c as t,O as o}from"./chunks/framework.58a9e095.js";const u=JSON.parse('{"title":"简介","description":"","frontmatter":{},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1730861693000}'),i={name:"index.md"};function n(l,a,d,h,c,p){return r(),t("div",null,a[0]||(a[0]=[o('

简介

    YinTao致力于打造简单、轻量、易部署的自动化浏览器引擎。它通过简单的脚本,丰富的指令、api提供强劲可控的自动化体验。并支持用户以浏览器插件的形式自定义引擎部分功能,简单快捷的进行自动化项目开发。

立即体验

点击这里立即体验YinTao在线预览版

项目介绍

     适用于自动化框架开发、数据爬虫处理、自动化脚本辅助,专注于解决ui自动化上手难,成本高,部署复杂难以在实际项目当中落地等问题,通过结合Chromium 二次封装引擎重构开发出YinTao 达到从底层高度定制,智能判定,定制语法的自动化测试引擎。实现了批量运行,无痕启动,定时运行,智能录制,一键安装等核心功能,同时支持服务端远程部署,多语言脚本支持。

开源

     YinTao是一款开源的软件, 我们希望和用户一起分享,建设。 如果你希望它变得更好,我们需要您的加入。

  • YinTao 客户端程序,提供上级通用包装器。 YinTao
  • core 核心执行程序。 [core]
  • doc YinTao使用文档 doc

前往下载

欢迎下载体验,提出宝贵意见
更多项目请查看相关服务

',11)]))}const f=e(i,[["render",n]]);export{u as __pageData,f as default}; +import{_ as e,o as r,c as t,O as o}from"./chunks/framework.58a9e095.js";const u=JSON.parse('{"title":"简介","description":"","frontmatter":{},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1731396361000}'),i={name:"index.md"};function n(l,a,d,h,c,p){return r(),t("div",null,a[0]||(a[0]=[o('

简介

    YinTao致力于打造简单、轻量、易部署的自动化浏览器引擎。它通过简单的脚本,丰富的指令、api提供强劲可控的自动化体验。并支持用户以浏览器插件的形式自定义引擎部分功能,简单快捷的进行自动化项目开发。

立即体验

点击这里立即体验YinTao在线预览版

项目介绍

     适用于自动化框架开发、数据爬虫处理、自动化脚本辅助,专注于解决ui自动化上手难,成本高,部署复杂难以在实际项目当中落地等问题,通过结合Chromium 二次封装引擎重构开发出YinTao 达到从底层高度定制,智能判定,定制语法的自动化测试引擎。实现了批量运行,无痕启动,定时运行,智能录制,一键安装等核心功能,同时支持服务端远程部署,多语言脚本支持。

开源

     YinTao是一款开源的软件, 我们希望和用户一起分享,建设。 如果你希望它变得更好,我们需要您的加入。

  • YinTao 客户端程序,提供上级通用包装器。 YinTao
  • core 核心执行程序。 [core]
  • doc YinTao使用文档 doc

前往下载

欢迎下载体验,提出宝贵意见
更多项目请查看相关服务

',11)]))}const f=e(i,[["render",n]]);export{u as __pageData,f as default}; diff --git a/assets/index.md.42a3be25.lean.js b/assets/index.md.5a346fa3.lean.js similarity index 97% rename from assets/index.md.42a3be25.lean.js rename to assets/index.md.5a346fa3.lean.js index ff8db73..6407e89 100644 --- a/assets/index.md.42a3be25.lean.js +++ b/assets/index.md.5a346fa3.lean.js @@ -1 +1 @@ -import{_ as e,o as r,c as t,O as o}from"./chunks/framework.58a9e095.js";const u=JSON.parse('{"title":"简介","description":"","frontmatter":{},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1730861693000}'),i={name:"index.md"};function n(l,a,d,h,c,p){return r(),t("div",null,a[0]||(a[0]=[o('

简介

    YinTao致力于打造简单、轻量、易部署的自动化浏览器引擎。它通过简单的脚本,丰富的指令、api提供强劲可控的自动化体验。并支持用户以浏览器插件的形式自定义引擎部分功能,简单快捷的进行自动化项目开发。

立即体验

点击这里立即体验YinTao在线预览版

项目介绍

     适用于自动化框架开发、数据爬虫处理、自动化脚本辅助,专注于解决ui自动化上手难,成本高,部署复杂难以在实际项目当中落地等问题,通过结合Chromium 二次封装引擎重构开发出YinTao 达到从底层高度定制,智能判定,定制语法的自动化测试引擎。实现了批量运行,无痕启动,定时运行,智能录制,一键安装等核心功能,同时支持服务端远程部署,多语言脚本支持。

开源

     YinTao是一款开源的软件, 我们希望和用户一起分享,建设。 如果你希望它变得更好,我们需要您的加入。

  • YinTao 客户端程序,提供上级通用包装器。 YinTao
  • core 核心执行程序。 [core]
  • doc YinTao使用文档 doc

前往下载

欢迎下载体验,提出宝贵意见
更多项目请查看相关服务

',11)]))}const f=e(i,[["render",n]]);export{u as __pageData,f as default}; +import{_ as e,o as r,c as t,O as o}from"./chunks/framework.58a9e095.js";const u=JSON.parse('{"title":"简介","description":"","frontmatter":{},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1731396361000}'),i={name:"index.md"};function n(l,a,d,h,c,p){return r(),t("div",null,a[0]||(a[0]=[o('

简介

    YinTao致力于打造简单、轻量、易部署的自动化浏览器引擎。它通过简单的脚本,丰富的指令、api提供强劲可控的自动化体验。并支持用户以浏览器插件的形式自定义引擎部分功能,简单快捷的进行自动化项目开发。

立即体验

点击这里立即体验YinTao在线预览版

项目介绍

     适用于自动化框架开发、数据爬虫处理、自动化脚本辅助,专注于解决ui自动化上手难,成本高,部署复杂难以在实际项目当中落地等问题,通过结合Chromium 二次封装引擎重构开发出YinTao 达到从底层高度定制,智能判定,定制语法的自动化测试引擎。实现了批量运行,无痕启动,定时运行,智能录制,一键安装等核心功能,同时支持服务端远程部署,多语言脚本支持。

开源

     YinTao是一款开源的软件, 我们希望和用户一起分享,建设。 如果你希望它变得更好,我们需要您的加入。

  • YinTao 客户端程序,提供上级通用包装器。 YinTao
  • core 核心执行程序。 [core]
  • doc YinTao使用文档 doc

前往下载

欢迎下载体验,提出宝贵意见
更多项目请查看相关服务

',11)]))}const f=e(i,[["render",n]]);export{u as __pageData,f as default}; diff --git a/guide/api/api.html b/guide/api/api.html index 572e870..dcac3f6 100644 --- a/guide/api/api.html +++ b/guide/api/api.html @@ -11,14 +11,14 @@ - + -
Skip to content

OPEN-API

描述

为满足各个平台用户,以及三方用户的使用需求。chery提供了强大的开放api能力。以满足用户在不修改源码的情况下,自主完成功能接入使用。 并同时支持http,websocket两种接入协议,用户可以自行选择接入模式。更好的完成功能接入。

- +
Skip to content

OPEN-API

描述

为满足各个平台用户,以及三方用户的使用需求。chery提供了强大的开放api能力。以满足用户在不修改源码的情况下,自主完成功能接入使用。 并同时支持http,websocket两种接入协议,用户可以自行选择接入模式。更好的完成功能接入。

+ \ No newline at end of file diff --git a/guide/api/func.html b/guide/api/func.html index 69218a7..f29c5a5 100644 --- a/guide/api/func.html +++ b/guide/api/func.html @@ -11,14 +11,14 @@ - + - - + + \ No newline at end of file diff --git a/guide/api/httpApi.html b/guide/api/httpApi.html index c458a74..2cbe8c7 100644 --- a/guide/api/httpApi.html +++ b/guide/api/httpApi.html @@ -11,7 +11,7 @@ - + @@ -99,8 +99,8 @@ "ok":1 }
{
   "ok":1
-}
- +}
+ \ No newline at end of file diff --git a/guide/api/instruct.html b/guide/api/instruct.html index 02da03f..9a001ef 100644 --- a/guide/api/instruct.html +++ b/guide/api/instruct.html @@ -11,14 +11,14 @@ - + -
Skip to content

指令

说明

YinTao 执行时主要通过解析指令代码执行, 这些内部指令在运行时以被预注册的js函数所替代,这意味着未知的指令无法得到正确的解析。

同时我们可以使用原生js进行逻辑编写。部分指令生效会有一些限制,这取决于不同页面之间的上下文差异,YinTao对这些工作进行了简化。

执行时只存在一套上下文,即当前控制的页面。多页面直接操作必须进行手动切换(不建议使用多页面)。

注意: execJavaScript执行环境仅为当前控制的浏览器页面,而原生的js将在node侧执行。

- +
Skip to content

指令

说明

YinTao 执行时主要通过解析指令代码执行, 这些内部指令在运行时以被预注册的js函数所替代,这意味着未知的指令无法得到正确的解析。

同时我们可以使用原生js进行逻辑编写。部分指令生效会有一些限制,这取决于不同页面之间的上下文差异,YinTao对这些工作进行了简化。

执行时只存在一套上下文,即当前控制的页面。多页面直接操作必须进行手动切换(不建议使用多页面)。

注意: execJavaScript执行环境仅为当前控制的浏览器页面,而原生的js将在node侧执行。

+ \ No newline at end of file diff --git a/guide/api/pasteConfig.html b/guide/api/pasteConfig.html index 3803758..719ca6e 100644 --- a/guide/api/pasteConfig.html +++ b/guide/api/pasteConfig.html @@ -11,7 +11,7 @@ - + @@ -53,8 +53,8 @@ "compatibility":true }
{
     "compatibility":true
-}

全部参数,参考open-Api

- +}

全部参数,参考open-Api

+ \ No newline at end of file diff --git a/guide/api/wsApi.html b/guide/api/wsApi.html index 9b7d054..780f674 100644 --- a/guide/api/wsApi.html +++ b/guide/api/wsApi.html @@ -11,7 +11,7 @@ - + @@ -86,8 +86,8 @@ "api": "exit", }
{
   "api": "exit",
-}
- +}
+ \ No newline at end of file diff --git a/guide/course/step.html b/guide/course/step.html index 919988d..1f06481 100644 --- a/guide/course/step.html +++ b/guide/course/step.html @@ -11,14 +11,14 @@ - + -
Skip to content

安装说明

Windows安装

跳转至下载页面,点击WIN下载按钮,等待下载完成后,逐一点击下一步直至安装完成。

Mac安装

跳转至下载页面,点击MAC下载按钮,等待下载完成后,拖动YinTao-drive.app进Applications即可。

安装成功校验

  • 打开桌面YinTao应用,然后打开浏览器,地址栏输入:http://localhost:8777/ping
  • 返回{"ok":1}即代表安装成功

安装问题说明

  • 无法打开软件,如上图,请在系统偏好设置->安全性与隐私页面,勾选任何来源,见下图。

  • 如上图设置页面,没有任何来源选项,请打开终端(启动器->其他->终端)
  • 输入sudo spctl --master-disable
  • 根据提示输入电脑开机密码,再次打开软件,弹窗点击打开即可

使用过程中如果你有任何的意见或者问题,欢迎反馈

- +
Skip to content

安装说明

Windows安装

跳转至下载页面,点击WIN下载按钮,等待下载完成后,逐一点击下一步直至安装完成。

Mac安装

跳转至下载页面,点击MAC下载按钮,等待下载完成后,拖动YinTao-drive.app进Applications即可。

安装成功校验

  • 打开桌面YinTao应用,然后打开浏览器,地址栏输入:http://localhost:8777/ping
  • 返回{"ok":1}即代表安装成功

安装问题说明

  • 无法打开软件,如上图,请在系统偏好设置->安全性与隐私页面,勾选任何来源,见下图。

  • 如上图设置页面,没有任何来源选项,请打开终端(启动器->其他->终端)
  • 输入sudo spctl --master-disable
  • 根据提示输入电脑开机密码,再次打开软件,弹窗点击打开即可

使用过程中如果你有任何的意见或者问题,欢迎反馈

+ \ No newline at end of file diff --git a/guide/course/trace.html b/guide/course/trace.html index 25b4a64..c650d9f 100644 --- a/guide/course/trace.html +++ b/guide/course/trace.html @@ -11,7 +11,7 @@ - + @@ -69,8 +69,8 @@ https://trace.playwright.dev/?trace=https://storage.jd.com/assert/nihao2.zip
https://trace.playwright.dev/?trace=http_url // 的方式进行
 
 // 例如:
-https://trace.playwright.dev/?trace=https://storage.jd.com/assert/nihao2.zip

点击此处在线查看跟踪效果

相关文档及资料参考

playwright-trace, chromium-trace

- +https://trace.playwright.dev/?trace=https://storage.jd.com/assert/nihao2.zip

点击此处在线查看跟踪效果

相关文档及资料参考

playwright-trace, chromium-trace

+ \ No newline at end of file diff --git a/guide/course/use.html b/guide/course/use.html index 236b7bf..34fa82d 100644 --- a/guide/course/use.html +++ b/guide/course/use.html @@ -11,7 +11,7 @@ - + @@ -27,8 +27,8 @@ "storage": { "id":123 } -}

- 点击上图的Send按钮,打开chrome浏览器后,即可进行脚本的录制工作。 - 录制完成后,生成的脚步代码在Response的Body内,见上图。 ### 执行脚本 - 打开postman,创建post请求,地址栏输入:`http://localhost:8777/run` - Body选择raw,格式选择JSON,内容输入如下 ```js { "script": "await page.create(`http://www.baidu.com`)\nawait page.change(0)\nawait dom.click(`#kw`)\nawait dom.set(`京东`,`#kw`)\nawait keyboard.press(`Enter`)\nawait dom.click(`(//*[string()='京东JD.COM官网 多快好省 只为品质生活'])[1]`)\nawait page.change(1)\n", "storage": "123", } ``` - postman完整回放脚本截图如下

- 点击上图的Send按钮,自动打开浏览器回放脚本。

使用过程中如果你有任何的意见或者问题,欢迎反馈。

- +}

- 点击上图的Send按钮,打开chrome浏览器后,即可进行脚本的录制工作。 - 录制完成后,生成的脚步代码在Response的Body内,见上图。 ### 执行脚本 - 打开postman,创建post请求,地址栏输入:`http://localhost:8777/run` - Body选择raw,格式选择JSON,内容输入如下 ```js { "script": "await page.create(`http://www.baidu.com`)\nawait page.change(0)\nawait dom.click(`#kw`)\nawait dom.set(`京东`,`#kw`)\nawait keyboard.press(`Enter`)\nawait dom.click(`(//*[string()='京东JD.COM官网 多快好省 只为品质生活'])[1]`)\nawait page.change(1)\n", "storage": "123", } ``` - postman完整回放脚本截图如下

- 点击上图的Send按钮,自动打开浏览器回放脚本。

使用过程中如果你有任何的意见或者问题,欢迎反馈。

+ \ No newline at end of file diff --git a/guide/data/cookie.html b/guide/data/cookie.html index a570f51..b375d0c 100644 --- a/guide/data/cookie.html +++ b/guide/data/cookie.html @@ -11,14 +11,14 @@ - + -
Skip to content
- +
Skip to content
+ \ No newline at end of file diff --git a/guide/data/errorCode.html b/guide/data/errorCode.html index 5616911..1f6791b 100644 --- a/guide/data/errorCode.html +++ b/guide/data/errorCode.html @@ -11,14 +11,14 @@ - + -
Skip to content

错误码

定义规范

我们理想提供通俗易通的错误码管理,在http error code 补充一位并丰富内容。

前缀含义示例
^1提示信息1000
^2成功信息2000
^3警告信息3002
^4错误信息4004

错误码列表

code描述
1001录制操作被取消
2000通用success
4025代码编译错误
- +
Skip to content

错误码

定义规范

我们理想提供通俗易通的错误码管理,在http error code 补充一位并丰富内容。

前缀含义示例
^1提示信息1000
^2成功信息2000
^3警告信息3002
^4错误信息4004

错误码列表

code描述
1001录制操作被取消
2000通用success
4025代码编译错误
+ \ No newline at end of file diff --git a/guide/data/keyCode.html b/guide/data/keyCode.html index 1ef7e6b..00bdf05 100644 --- a/guide/data/keyCode.html +++ b/guide/data/keyCode.html @@ -11,7 +11,7 @@ - + @@ -77,8 +77,8 @@ | 'A'| 'B'| 'C'| 'D'| 'E'| 'F'| 'G'| 'H'| 'I'| 'J'| 'K'| 'L'| 'M'| 'N'| 'O'| 'P'| 'Q'   | 'R'| 'S'| 'T'| 'U'| 'V'| 'W'| 'X'| 'Y'| 'Z' | ':'| '<'| '_'| '>'| '?'| '~'| '{'| '|'| '}'| '"' -  | 'SoftLeft'| 'SoftRight'| 'Camera'| 'Call'| 'EndCall'| 'VolumeDown'| 'VolumeUp' - +  | 'SoftLeft'| 'SoftRight'| 'Camera'| 'Call'| 'EndCall'| 'VolumeDown'| 'VolumeUp' + \ No newline at end of file diff --git a/guide/ex/ex1.html b/guide/ex/ex1.html index e9fab55..e011078 100644 --- a/guide/ex/ex1.html +++ b/guide/ex/ex1.html @@ -11,14 +11,14 @@ - + -
Skip to content

实现原理

录制原理

  • 通过webview加载目标页面,向目标页面注入js,获取控制权。
  • 通过js监听用户的行为及操作,将监听的行为转换为匹配的语法。
  • 将录制生成的语法进行存储生成脚本文件。

脚本执行原理

  • 读取传输的脚本文件。
  • 新建一个浏览器进程并通过js解析语法转为指令,将指令分层级通过进行ipc进行传输,层级按照 浏览器>页面> iframe。
  • 具体页面拿到响应的指令,再将指令转换为具体的js脚本执行,并记录执行数据。
  • 运行完成后,将执行数据结果返回。
- +
Skip to content

实现原理

录制原理

  • 通过webview加载目标页面,向目标页面注入js,获取控制权。
  • 通过js监听用户的行为及操作,将监听的行为转换为匹配的语法。
  • 将录制生成的语法进行存储生成脚本文件。

脚本执行原理

  • 读取传输的脚本文件。
  • 新建一个浏览器进程并通过js解析语法转为指令,将指令分层级通过进行ipc进行传输,层级按照 浏览器>页面> iframe。
  • 具体页面拿到响应的指令,再将指令转换为具体的js脚本执行,并记录执行数据。
  • 运行完成后,将执行数据结果返回。
+ \ No newline at end of file diff --git a/guide/ex/ex2.html b/guide/ex/ex2.html index cc7a323..3b59d70 100644 --- a/guide/ex/ex2.html +++ b/guide/ex/ex2.html @@ -11,14 +11,14 @@ - + -
Skip to content

特性

上手简单

     基于录制生成准确代码,使用门槛低。

丰富底层指令支持

     开发时,我们内置了多种基础指令,足以满足90%的用户场景。

开源共享

     我们使用MIT开源协议,用户可以充分扩展满足业务需求

实时运行上下文

     为使得逻辑更通俗易懂,设计时无需用户区分上下文环境,运行时将根据页面操作自动完成转化。

- +
Skip to content

特性

上手简单

     基于录制生成准确代码,使用门槛低。

丰富底层指令支持

     开发时,我们内置了多种基础指令,足以满足90%的用户场景。

开源共享

     我们使用MIT开源协议,用户可以充分扩展满足业务需求

实时运行上下文

     为使得逻辑更通俗易懂,设计时无需用户区分上下文环境,运行时将根据页面操作自动完成转化。

+ \ No newline at end of file diff --git a/guide/exam/apiHook.html b/guide/exam/apiHook.html index 59a29f7..57ec5ce 100644 --- a/guide/exam/apiHook.html +++ b/guide/exam/apiHook.html @@ -11,7 +11,7 @@ - + @@ -59,8 +59,8 @@ const res = await axios.get('http://YinTao.jd.com/ping') console.log('res',res.data) // 获取data数据 -await sleep(2000) - +await sleep(2000) + \ No newline at end of file diff --git a/guide/exam/baseOpt.html b/guide/exam/baseOpt.html index 13526dc..f25c003 100644 --- a/guide/exam/baseOpt.html +++ b/guide/exam/baseOpt.html @@ -11,7 +11,7 @@ - + @@ -79,8 +79,8 @@ // 截图上传 await dom.upload(`#app > div.main-cnt > div > div.el-scrollbar__wrap > div > div > div.page-component__content > section > div:nth-child(4) > div.source > div > div > div.el-upload.el-upload--text > input`,`C:\\Users\\zhouyuan11\\AppData\\Local\\Programs\\cherry_driver\\cherry_tray@2x.png`) -await sleep(1000) - +await sleep(1000) + \ No newline at end of file diff --git a/guide/exam/mobile.html b/guide/exam/mobile.html index eefc892..e9fa5db 100644 --- a/guide/exam/mobile.html +++ b/guide/exam/mobile.html @@ -11,7 +11,7 @@ - + @@ -33,8 +33,8 @@ await sleep(2000) // 在模拟移动端点击时可能出现dom.click 点击无效情况,可使用dom.dispatchEvent代替点击 -await dom.dispatchEvent('#index-bn','click') - +await dom.dispatchEvent('#index-bn','click') + \ No newline at end of file diff --git a/guide/exam/modifyDate.html b/guide/exam/modifyDate.html index c045e72..5452e71 100644 --- a/guide/exam/modifyDate.html +++ b/guide/exam/modifyDate.html @@ -11,7 +11,7 @@ - + @@ -41,8 +41,8 @@ await dom.fill('//*[@id=\"app\"]/div[2]/div[1]/div[1]/div[1]/div[1]/div[2]/section[1]/div[1]/div[1]/div[1]/div[1]/div[1]/input[1]',nowDay) await sleep(1000) await keyboard.press(`Enter`) - await sleep(1000)

show

- + await sleep(1000)

show

+ \ No newline at end of file diff --git a/guide/exam/problem.html b/guide/exam/problem.html index 4f8adeb..223f300 100644 --- a/guide/exam/problem.html +++ b/guide/exam/problem.html @@ -11,7 +11,7 @@ - + @@ -21,8 +21,24 @@ await page.setBrowserCofing({ignoreHTTPSErrors:true}) // ....其他代码
// 脚本首行配置忽略https
 await page.setBrowserCofing({ignoreHTTPSErrors:true})
-// ....其他代码
- +// ....其他代码

获取playwright原生控件

获取pw原生控件可以加强对页面操作的定制化, yintao 通过对pw进行封装来自动完成调度。

结构如下,可通过page.control 来获取 TestControl 对象. 更多用法参考

js
class TestControl {
+  runContext: Page | Frame | undefined
+  browserContext: BrowserContext | undefined
+  currentPage: Page | undefined
+  browser: Browser
+  id: string
+ }
class TestControl {
+  runContext: Page | Frame | undefined
+  browserContext: BrowserContext | undefined
+  currentPage: Page | undefined
+  browser: Browser
+  id: string
+ }
js

+// export: 获取浏览器的cookeis信息
+let cookies =  await page.control.browserContext.cookies();

+// export: 获取浏览器的cookeis信息
+let cookies =  await page.control.browserContext.cookies();
+ \ No newline at end of file diff --git a/guide/exam/select.html b/guide/exam/select.html index 4a974aa..f1b191c 100644 --- a/guide/exam/select.html +++ b/guide/exam/select.html @@ -11,7 +11,7 @@ - + @@ -59,8 +59,8 @@ // document.getElementsByTagName 通过标签名获取元素 // document.getElementsByClassName 通过元素属性获取 // document.querySelector(); 通过selector 选择器获取元素 -// document.getElementsByName 通过元素名称获取

想了解全部的原生定位方式可以通过查看mdn document 来学习

- +// document.getElementsByName 通过元素名称获取

想了解全部的原生定位方式可以通过查看mdn document 来学习

+ \ No newline at end of file diff --git a/guide/instructs/assert.html b/guide/instructs/assert.html index 183c93d..97dfeba 100644 --- a/guide/instructs/assert.html +++ b/guide/instructs/assert.html @@ -11,7 +11,7 @@ - + @@ -23,8 +23,8 @@ await assert.all(false, "断言内容为false,请检查相关代码逻辑") // 当断言失败时会显示,提示文字
await assert.true('存在') // 
 await assert.all(false, "断言内容为false,请检查相关代码逻辑") // 当断言失败时会显示,提示文字

assert.custom(sign,attr,preValue,operate)

断言,获取元素的预期值与实际值进行比较。

sign:元素标记,支持传递元素的css选择器xpathid

attr:断言的元素的属性值;

preValue: 断言元素属性的预期值;

opreate: 比较方式:0-相等1-不相等2-包含3-不包含

js
await assert.custom('#su','value','百度一下',0) //判断su的value是否等于百度一下
 await assert.custom('.title','innerText','hello',0) // 获取class=tiile的文本内容进行断言
await assert.custom('#su','value','百度一下',0) //判断su的value是否等于百度一下
-await assert.custom('.title','innerText','hello',0) // 获取class=tiile的文本内容进行断言

assert.title(string)

断言,指定dom的title与入参进行比较。

js
await assert.title('百度一下,你就知道') //判断当前页面的title值是不是‘百度一下,你就知道’
await assert.title('百度一下,你就知道') //判断当前页面的title值是不是‘百度一下,你就知道’

assert.location(url)

断言,指定dom的url与文本进行比较。

js
await assert.location('https://www.baidu.com/') //判断当前页面的url值与传参是否一致
await assert.location('https://www.baidu.com/') //判断当前页面的url值与传参是否一致
- +await assert.custom('.title','innerText','hello',0) // 获取class=tiile的文本内容进行断言

assert.title(string)

断言,指定dom的title与入参进行比较。

js
await assert.title('百度一下,你就知道') //判断当前页面的title值是不是‘百度一下,你就知道’
await assert.title('百度一下,你就知道') //判断当前页面的title值是不是‘百度一下,你就知道’

assert.location(url)

断言,指定dom的url与文本进行比较。

js
await assert.location('https://www.baidu.com/') //判断当前页面的url值与传参是否一致
await assert.location('https://www.baidu.com/') //判断当前页面的url值与传参是否一致
+ \ No newline at end of file diff --git a/guide/instructs/browser.html b/guide/instructs/browser.html index b42c258..7a8d3f0 100644 --- a/guide/instructs/browser.html +++ b/guide/instructs/browser.html @@ -11,7 +11,7 @@ - + @@ -41,8 +41,8 @@ await browser.route('**/*.{png}',(route)=>{ console.log('route',route) route.continue({url:'http://storage.360buyimg.com/assert/icon.png'}); -}) - +}) + \ No newline at end of file diff --git a/guide/instructs/cookies.html b/guide/instructs/cookies.html index 12b154b..7c62bf8 100644 --- a/guide/instructs/cookies.html +++ b/guide/instructs/cookies.html @@ -11,7 +11,7 @@ - + @@ -27,8 +27,8 @@ "name": "sso.jd.com", "path": "/", "value": "jZ0bGJpeXR3Z1FCeWRPclJ1LTRtOUI2YWR6fkpXfmxKSDU1Sk5LS3htS3dDS3RoRUFBQUFBJ", -}])

cookies.clear

清空浏览器cookie

js
await cookies.clear()
await cookies.clear()
- +}])

cookies.clear

清空浏览器cookie

js
await cookies.clear()
await cookies.clear()
+ \ No newline at end of file diff --git a/guide/instructs/dom.html b/guide/instructs/dom.html index b89eb18..30e306c 100644 --- a/guide/instructs/dom.html +++ b/guide/instructs/dom.html @@ -11,7 +11,7 @@ - + @@ -44,8 +44,8 @@ strict?: boolean | undefined timeout?: number | undefined trial?: boolean | undefined -

})

鼠标悬浮操作, 其中参数sign支持传递元素的css选择器xpathid

js
  await dom.tap('#id') # 用于在h5中模拟按压
  await dom.tap('#id') # 用于在h5中模拟按压
- +

})

鼠标悬浮操作, 其中参数sign支持传递元素的css选择器xpathid

js
  await dom.tap('#id') # 用于在h5中模拟按压
  await dom.tap('#id') # 用于在h5中模拟按压
+ \ No newline at end of file diff --git a/guide/instructs/global.html b/guide/instructs/global.html index 4485885..61271ab 100644 --- a/guide/instructs/global.html +++ b/guide/instructs/global.html @@ -11,7 +11,7 @@ - + @@ -45,8 +45,8 @@ }catch(e){ errorSend("错误未找到点击id") } -console.log("继续往下执行") - +console.log("继续往下执行") + \ No newline at end of file diff --git a/guide/instructs/img.html b/guide/instructs/img.html index 21bd5c4..e4c0e20 100644 --- a/guide/instructs/img.html +++ b/guide/instructs/img.html @@ -11,7 +11,7 @@ - + @@ -19,8 +19,8 @@
Skip to content

img

通过图像进行操作

img.click(imgPath)

通过图像进行点击, 会点击当前页面匹配的图像中心区域。基于sift实现

js
await img.click("https://storage.360buyimg.com/assert/baidu_btn.jpg") // 使用远程图片操作点击
 await img.click("/use/app/baidu_btn.jpg") // 使用本地图像点击
await img.click("https://storage.360buyimg.com/assert/baidu_btn.jpg") // 使用远程图片操作点击
-await img.click("/use/app/baidu_btn.jpg") // 使用本地图像点击
- +await img.click("/use/app/baidu_btn.jpg") // 使用本地图像点击 + \ No newline at end of file diff --git a/guide/instructs/keyboard.html b/guide/instructs/keyboard.html index bc36563..4f701f7 100644 --- a/guide/instructs/keyboard.html +++ b/guide/instructs/keyboard.html @@ -11,14 +11,14 @@ - + -
Skip to content

keyboard

使用键盘对页面进行操作

keyboard.press(keyCode)

模拟点击键盘。

js
await keyboard.press('KeyA')  // 模拟点击键盘a键
await keyboard.press('KeyA')  // 模拟点击键盘a键

keyboard.down(keyCode)

模拟按下键盘。

js
await keyboard.down('ControlLeft')  // 模拟按下
await keyboard.down('ControlLeft')  // 模拟按下

keyboard.up(keyCode)

模拟抬起键盘。

js
await keyboard.up('ControlLeft')  // 模拟键盘抬起
await keyboard.up('ControlLeft')  // 模拟键盘抬起

keyboard.type(keyCode)

模拟键盘输入。

js
await keyboard.type('hello word')  // 模拟输入,等同于使用 await set()
await keyboard.type('hello word')  // 模拟输入,等同于使用 await set()
- +
Skip to content

keyboard

使用键盘对页面进行操作

keyboard.press(keyCode)

模拟点击键盘。

js
await keyboard.press('KeyA')  // 模拟点击键盘a键
await keyboard.press('KeyA')  // 模拟点击键盘a键

keyboard.down(keyCode)

模拟按下键盘。

js
await keyboard.down('ControlLeft')  // 模拟按下
await keyboard.down('ControlLeft')  // 模拟按下

keyboard.up(keyCode)

模拟抬起键盘。

js
await keyboard.up('ControlLeft')  // 模拟键盘抬起
await keyboard.up('ControlLeft')  // 模拟键盘抬起

keyboard.type(keyCode)

模拟键盘输入。

js
await keyboard.type('hello word')  // 模拟输入,等同于使用 await set()
await keyboard.type('hello word')  // 模拟输入,等同于使用 await set()
+ \ No newline at end of file diff --git a/guide/instructs/mouse.html b/guide/instructs/mouse.html index 3c7b8d9..7f94697 100644 --- a/guide/instructs/mouse.html +++ b/guide/instructs/mouse.html @@ -11,7 +11,7 @@ - + @@ -33,8 +33,8 @@ // todo在无法得知坐标的情况下,可以通过在控制台输入: document.onmousemove = (e)=>{console.log("x:",e.x,"y:",e.y)} -// 即可实时打印坐标位置

mouse.up(options:{button?: string;clickCount?: number;})

用于模拟鼠标抬起事件, 默认值:button = 'left', clickCount = 1。

js
await mouse.up()  // 模拟鼠标抬起
await mouse.up()  // 模拟鼠标抬起

mouse.click(x:number,y:number,options:{delay?: number;})

用于模拟鼠标点击事件,

js
await mouse.click(100,100)  // 模拟点击100,100位置
await mouse.click(100,100)  // 模拟点击100,100位置

mouse.move(options:{button?: string;clickCount?: number;})

用于模拟鼠标移动事件。

js
await mouse.move(100,100)  // 模拟鼠标移动至像素100,100位置
await mouse.move(100,100)  // 模拟鼠标移动至像素100,100位置

mouse.wheel(x, y)

用于模拟鼠标滚轮事件。

js
await mouse.wheel(0,300)  // 滚轮向下滚动300
await mouse.wheel(0,300)  // 滚轮向下滚动300
- +// 即可实时打印坐标位置

mouse.up(options:{button?: string;clickCount?: number;})

用于模拟鼠标抬起事件, 默认值:button = 'left', clickCount = 1。

js
await mouse.up()  // 模拟鼠标抬起
await mouse.up()  // 模拟鼠标抬起

mouse.click(x:number,y:number,options:{delay?: number;})

用于模拟鼠标点击事件,

js
await mouse.click(100,100)  // 模拟点击100,100位置
await mouse.click(100,100)  // 模拟点击100,100位置

mouse.move(options:{button?: string;clickCount?: number;})

用于模拟鼠标移动事件。

js
await mouse.move(100,100)  // 模拟鼠标移动至像素100,100位置
await mouse.move(100,100)  // 模拟鼠标移动至像素100,100位置

mouse.wheel(x, y)

用于模拟鼠标滚轮事件。

js
await mouse.wheel(0,300)  // 滚轮向下滚动300
await mouse.wheel(0,300)  // 滚轮向下滚动300
+ \ No newline at end of file diff --git a/guide/instructs/page.html b/guide/instructs/page.html index 6e429e6..0046ce6 100644 --- a/guide/instructs/page.html +++ b/guide/instructs/page.html @@ -11,7 +11,7 @@ - + @@ -79,8 +79,8 @@ const path = require('path') const os = require('os') const imgPath = path.resolve(os.tmpdir(),'nihao.jpg') // 获取跨平台的临时目录 -await page.screenshot(imgPath) - +await page.screenshot(imgPath) + \ No newline at end of file diff --git a/guide/introduce/download.html b/guide/introduce/download.html index f1b58e0..46e1dbc 100644 --- a/guide/introduce/download.html +++ b/guide/introduce/download.html @@ -11,14 +11,14 @@ - + -
Skip to content

下载

介绍

YinTao 提供安装包,双击即可完整一键下载。

下载地址

YinTao-2.0.7 MAC下载

YinTao-2.0.7 WINDOW下载

历史版本下载

更新公告

v2.0.1版本更新:

  1. 修复pago.to未重制执行上下文问题
  2. page.screenshot 命令调整当输入未文件名称时(例:"nihao.jpg"),自动存放至临时目录中,以保障跨终端兼容。

v2.0.0版本更新(重大更新):

  1. 底层架构重大重组(不影响历史脚本执行)

v1.1.7版本更新:

  1. 新增page.hasText指令,用于快速检测页面文本的内容
  2. 调整page.setBrowserCofing 优先级为顺序优先级,更易理解。
  3. 优化dom.exist 已支持timeout
  4. 修复程序在winodws中,长脚本导致无法执行的问题。
  5. 增加dragTo 指令,方便实现拖拽

v1.1.6版本更新:

  1. 修复实时日志标识问题,回复实时日志展示功能。

v1.1.5版本更新:

  1. 增加追踪功能..
  2. 增加元素截图dom.screenshot指令,优化page.screenshot 实现方式
  3. 添加env环境变量读取, 通过env变量使用
  4. 增加ai错误堆栈指导,协助定位问题。
  5. 历史部分bug修复..
- +
Skip to content

下载

介绍

YinTao 提供安装包,双击即可完整一键下载。

下载地址

YinTao-2.0.7 MAC下载

YinTao-2.0.7 WINDOW下载

历史版本下载

更新公告

v2.0.1版本更新:

  1. 修复pago.to未重制执行上下文问题
  2. page.screenshot 命令调整当输入未文件名称时(例:"nihao.jpg"),自动存放至临时目录中,以保障跨终端兼容。

v2.0.0版本更新(重大更新):

  1. 底层架构重大重组(不影响历史脚本执行)

v1.1.7版本更新:

  1. 新增page.hasText指令,用于快速检测页面文本的内容
  2. 调整page.setBrowserCofing 优先级为顺序优先级,更易理解。
  3. 优化dom.exist 已支持timeout
  4. 修复程序在winodws中,长脚本导致无法执行的问题。
  5. 增加dragTo 指令,方便实现拖拽

v1.1.6版本更新:

  1. 修复实时日志标识问题,回复实时日志展示功能。

v1.1.5版本更新:

  1. 增加追踪功能..
  2. 增加元素截图dom.screenshot指令,优化page.screenshot 实现方式
  3. 添加env环境变量读取, 通过env变量使用
  4. 增加ai错误堆栈指导,协助定位问题。
  5. 历史部分bug修复..
+ \ No newline at end of file diff --git a/guide/introduce/history.html b/guide/introduce/history.html index 1b8c731..00f355e 100644 --- a/guide/introduce/history.html +++ b/guide/introduce/history.html @@ -11,14 +11,14 @@ - + -
Skip to content

历史版本

v2.0.7

版本描述: 历史问题修复: 修复未使用安装附录浏览器问题!
win系统:YinTao-2.0.7.exe

v2.0.4

win系统:YinTao-2.0.4.exe

v2.0.2

win系统:YinTao-2.0.2.exe

v2.0.0

win系统:YinTao-2.0.0.exe

v1.1.7

版本描述: deepTest录制推荐版本
win系统:YinTao-1.1.7.exe
- +
Skip to content

历史版本

v2.0.7

版本描述: 历史问题修复: 修复未使用安装附录浏览器问题!
win系统:YinTao-2.0.7.exe

v2.0.4

win系统:YinTao-2.0.4.exe

v2.0.2

win系统:YinTao-2.0.2.exe

v2.0.0

win系统:YinTao-2.0.0.exe

v1.1.7

版本描述: deepTest录制推荐版本
win系统:YinTao-1.1.7.exe
+ \ No newline at end of file diff --git a/guide/introduce/introduce.html b/guide/introduce/introduce.html index 2ac1544..1c1cc05 100644 --- a/guide/introduce/introduce.html +++ b/guide/introduce/introduce.html @@ -11,14 +11,14 @@ - + -
Skip to content

简介

    YinTao致力于打造简单、轻量、易部署的自动化浏览器引擎。它通过简单的脚本,丰富的指令、api提供强劲可控的自动化体验。并支持用户以浏览器插件的形式自定义引擎部分功能,简单快捷的进行自动化项目开发。

立即体验

点击这里立即体验YinTao在线预览版

项目介绍

     适用于自动化框架开发、数据爬虫处理、自动化脚本辅助,专注于解决ui自动化上手难,成本高,部署复杂难以在实际项目当中落地等问题,通过结合Chromium 二次封装引擎重构开发出YinTao 达到从底层高度定制,智能判定,定制语法的自动化测试引擎。实现了批量运行,无痕启动,定时运行,智能录制,一键安装等核心功能,同时支持服务端远程部署,多语言脚本支持。

开源

     YinTao是一款开源的软件, 我们希望和用户一起分享,建设。 如果你希望它变得更好,我们需要您的加入。

  • YinTao 客户端程序,提供上级通用包装器。 YinTao
  • core 核心执行程序。 [core]
  • doc YinTao使用文档 doc

前往下载

欢迎下载体验,提出宝贵意见
更多项目请查看相关服务

- +
Skip to content

简介

    YinTao致力于打造简单、轻量、易部署的自动化浏览器引擎。它通过简单的脚本,丰富的指令、api提供强劲可控的自动化体验。并支持用户以浏览器插件的形式自定义引擎部分功能,简单快捷的进行自动化项目开发。

立即体验

点击这里立即体验YinTao在线预览版

项目介绍

     适用于自动化框架开发、数据爬虫处理、自动化脚本辅助,专注于解决ui自动化上手难,成本高,部署复杂难以在实际项目当中落地等问题,通过结合Chromium 二次封装引擎重构开发出YinTao 达到从底层高度定制,智能判定,定制语法的自动化测试引擎。实现了批量运行,无痕启动,定时运行,智能录制,一键安装等核心功能,同时支持服务端远程部署,多语言脚本支持。

开源

     YinTao是一款开源的软件, 我们希望和用户一起分享,建设。 如果你希望它变得更好,我们需要您的加入。

  • YinTao 客户端程序,提供上级通用包装器。 YinTao
  • core 核心执行程序。 [core]
  • doc YinTao使用文档 doc

前往下载

欢迎下载体验,提出宝贵意见
更多项目请查看相关服务

+ \ No newline at end of file diff --git a/hashmap.json b/hashmap.json index 19d510a..0d316c0 100644 --- a/hashmap.json +++ b/hashmap.json @@ -1 +1 @@ -{"guide_data_errorcode.md":"451fc8f9","guide_data_cookie.md":"fb3a3749","guide_ex_ex1.md":"b7a747e6","readme.md":"09f1b56f","guide_api_api.md":"6c4bf59e","guide_ex_ex2.md":"a2f5f59a","guide_course_trace.md":"af922a17","guide_api_pasteconfig.md":"89c5ff24","guide_instructs_assert.md":"92c2bef8","guide_api_instruct.md":"c1427e4f","guide_introduce_download.md":"de784c45","guide_exam_mobile.md":"7d7bb39a","guide_instructs_browser.md":"ccad7dbc","guide_introduce_history.md":"a68dc1ee","guide_instructs_cookies.md":"1b39e556","guide_instructs_global.md":"f509fcc9","guide_exam_modifydate.md":"731f4685","guide_api_httpapi.md":"53742a4e","guide_instructs_mouse.md":"da223a7b","guide_exam_baseopt.md":"b7e41691","guide_introduce_introduce.md":"735daef4","guide_instructs_keyboard.md":"30e83a47","guide_api_wsapi.md":"7608d83e","guide_exam_apihook.md":"93510b75","guide_api_func.md":"670f24b0","guide_course_step.md":"a47386be","guide_exam_problem.md":"0f24a69f","guide_instructs_dom.md":"58e1f351","guide_course_use.md":"ba400759","guide_data_keycode.md":"30c939bf","guide_instructs_page.md":"1f787bd3","guide_exam_select.md":"a744a5cc","index.md":"42a3be25","guide_instructs_img.md":"f4f507a1"} +{"guide_data_errorcode.md":"1ebe6f29","guide_course_trace.md":"7506394b","readme.md":"0aac98d3","guide_exam_select.md":"27938d2d","guide_course_step.md":"6945c8cc","guide_api_pasteconfig.md":"9fcb331a","guide_api_api.md":"3a40f90b","guide_api_wsapi.md":"2af3c25e","guide_data_cookie.md":"14e51f6b","guide_data_keycode.md":"fdc92244","guide_exam_modifydate.md":"f83b945a","guide_introduce_history.md":"ee9ba7fd","index.md":"5a346fa3","guide_introduce_introduce.md":"c9292364","guide_instructs_cookies.md":"d27d31fc","guide_introduce_download.md":"c2717140","guide_exam_mobile.md":"7777c4e4","guide_instructs_page.md":"a70f8924","guide_api_func.md":"e053ab53","guide_instructs_mouse.md":"6a54335d","guide_instructs_img.md":"7a8493d8","guide_course_use.md":"fcbd62a3","guide_instructs_dom.md":"71fe5e00","guide_instructs_assert.md":"a0d683db","guide_ex_ex2.md":"bb7ab9aa","guide_instructs_keyboard.md":"49337e42","guide_ex_ex1.md":"8b03ad5c","guide_exam_apihook.md":"c80bf311","guide_instructs_global.md":"cc3b804e","guide_exam_baseopt.md":"9b964e0d","guide_api_httpapi.md":"20f2b390","guide_instructs_browser.md":"274f8df1","guide_api_instruct.md":"25a9690d","guide_exam_problem.md":"06a375c3"} diff --git a/index.html b/index.html index 69a24d0..bdb5be1 100644 --- a/index.html +++ b/index.html @@ -11,14 +11,14 @@ - + -
Skip to content

简介

    YinTao致力于打造简单、轻量、易部署的自动化浏览器引擎。它通过简单的脚本,丰富的指令、api提供强劲可控的自动化体验。并支持用户以浏览器插件的形式自定义引擎部分功能,简单快捷的进行自动化项目开发。

立即体验

点击这里立即体验YinTao在线预览版

项目介绍

     适用于自动化框架开发、数据爬虫处理、自动化脚本辅助,专注于解决ui自动化上手难,成本高,部署复杂难以在实际项目当中落地等问题,通过结合Chromium 二次封装引擎重构开发出YinTao 达到从底层高度定制,智能判定,定制语法的自动化测试引擎。实现了批量运行,无痕启动,定时运行,智能录制,一键安装等核心功能,同时支持服务端远程部署,多语言脚本支持。

开源

     YinTao是一款开源的软件, 我们希望和用户一起分享,建设。 如果你希望它变得更好,我们需要您的加入。

  • YinTao 客户端程序,提供上级通用包装器。 YinTao
  • core 核心执行程序。 [core]
  • doc YinTao使用文档 doc

前往下载

欢迎下载体验,提出宝贵意见
更多项目请查看相关服务

- +
Skip to content

简介

    YinTao致力于打造简单、轻量、易部署的自动化浏览器引擎。它通过简单的脚本,丰富的指令、api提供强劲可控的自动化体验。并支持用户以浏览器插件的形式自定义引擎部分功能,简单快捷的进行自动化项目开发。

立即体验

点击这里立即体验YinTao在线预览版

项目介绍

     适用于自动化框架开发、数据爬虫处理、自动化脚本辅助,专注于解决ui自动化上手难,成本高,部署复杂难以在实际项目当中落地等问题,通过结合Chromium 二次封装引擎重构开发出YinTao 达到从底层高度定制,智能判定,定制语法的自动化测试引擎。实现了批量运行,无痕启动,定时运行,智能录制,一键安装等核心功能,同时支持服务端远程部署,多语言脚本支持。

开源

     YinTao是一款开源的软件, 我们希望和用户一起分享,建设。 如果你希望它变得更好,我们需要您的加入。

  • YinTao 客户端程序,提供上级通用包装器。 YinTao
  • core 核心执行程序。 [core]
  • doc YinTao使用文档 doc

前往下载

欢迎下载体验,提出宝贵意见
更多项目请查看相关服务

+ \ No newline at end of file