Description: "\u3002\u5728selectedList firstList lastList\u7B49\u5F88\u591A\u914D\u7F6E\ \u4E2D\uFF0C\u9700\u8981\u586B\u5145\u7684\u662F\u6D4B\u8BD5\u6B65\u9AA4Step\u7C7B\ \u578B\u3002Step\u7C7B\u578B\u7531given\uFF08\u6EE1\u8DB3\u6761\u4EF6\uFF09when\uFF08\ \u6761\u4EF6\u6EE1\u8DB3\u7684\u884C\u4E3A\uFF09then\uFF08\u65AD\u8A00\uFF09\u4E09\ \u90E8\u5206\u7EC4\u6210\u3002Step\u53EF\u4EE5\u7B80\u5316\u4E3Axpath\uFF08\u5B9A\ \u4F4D\u8868\u8FBE\u5F0F\uFF0C\u652F\u6301xpath \u6B63\u5219 \u5305\u542B\u5173\u7CFB\ \uFF09\u4E0Eaction\uFF08\u70B9\u51FB \u8F93\u5165\u7B49\u884C\u4E3A\uFF09\u3002" afterAll: - action: driver.swipe(0.5,0.67,0.5,0.33) xpath: //* afterAllDescription: "\u5728\u904D\u5386\u5B8C\u5F53\u524D\u9875\u9762\u5185\u7684\ \u6240\u6709\u63A7\u4EF6\u540E\uFF0C\u662F\u5426\u9700\u8981\u5237\u65B0\u6216\u8005\ \u6ED1\u52A8" afterAllMax: 5 afterAllMaxDescription: "afterAll\u7684\u6700\u5927\u91CD\u8BD5\u6B21\u6570\uFF0C\u6BD4\ \u5982\u8FDE\u7EED\u6ED1\u52A82\u6B21\u90FD\u6CA1\u65B0\u5143\u7D20\u5373\u53D6\u6D88" afterElement: [] afterElementDescription: "\u5728\u904D\u5386\u6BCF\u4E2A\u63A7\u4EF6\u4E4B\u540E\u9ED8\ \u8BA4\u6267\u884C\u7684\u52A8\u4F5C" afterElementWait: 3000 afterElementWaitDescription: "\u5728\u904D\u5386\u6BCF\u4E2A\u63A7\u4EF6\u4E4B\u540E\ \u9ED8\u8BA4\u7B49\u5F85\u7684\u65F6\u95F4\uFF0C\u7528\u4E8E\u7B49\u5F85\u65B0\u9875\ \u9762\u52A0\u8F7D" appWhiteList: [] appWhiteListDescription: "app\u767D\u540D\u5355\uFF0C\u5141\u8BB8\u5728\u8FD9\u4E9B\ app\u91CC\u8FDB\u884C\u904D\u5386" assertGlobal: [] assertGlobalDescription: "\u5168\u5C40\u65AD\u8A00" backButton: - action: '' actions: [] given: [] then: [] times: -1 when: null xpath: Navigate up backButtonDescription: "\u540E\u9000\u6309\u94AE\u5217\u8868\uFF0C\u9ED8\u8BA4\u5728\ \u6240\u6709\u63A7\u4EF6\u904D\u5386\u5B8C\u6210\u540E\uFF0C\u624D\u4F1A\u6700\u540E\ \u70B9\u51FB\u540E\u9000\u6309\u94AE\u3002\u76EE\u524D\u5177\u5907\u4E86\u81EA\u52A8\ \u5224\u65AD\u8FD4\u56DE\u6309\u94AE\u7684\u80FD\u529B\uFF0C\u9ED8\u8BA4\u4E0D\u9700\ \u8981\u914D\u7F6E" baseUrl: [] baseUrlDescription: "\u8BBE\u7F6E\u4E00\u4E2A\u8D77\u59CB\u70B9\uFF0C\u4ECE\u8FD9\u4E2A\ \u8D77\u59CB\u70B9\u5F00\u59CB\u8BA1\u7B97\u6DF1\u5EA6\uFF0C\u6BD4\u5982\u9ED8\u8BA4\ \u4ECE\u767B\u5F55\u540E\u7684\u754C\u9762\u5F00\u59CB\u8BA1\u7B97" beforeElement: [] beforeElementDescription: "\u5728\u904D\u5386\u6BCF\u4E2A\u63A7\u4EF6\u4E4B\u524D\u9ED8\ \u8BA4\u6267\u884C\u7684\u52A8\u4F5C" beforeRestart: [] beforeRestartDescription: "\u5728\u91CD\u542Fsession\u4E4B\u524D\u505A\u7684\u4E8B\ \u60C5" blackList: - action: '' actions: [] given: [] then: [] times: -1 when: null xpath: .*[0-9]{2}.* - action: '' actions: [] given: [] then: [] times: -1 when: null xpath: Get Music blackListDescription: "\u9ED1\u540D\u5355\u5217\u8868 matches\u98CE\u683C, \u9ED8\u8BA4\ \u6392\u9664\u5185\u5BB9\u5305\u542B2\u4E2A\u6570\u5B57\u7684\u63A7\u4EF6" capability: appActivity: com.teinproductions.tein.pitrainer.MainActivity appPackage: com.teinproductions.tein.pitrainer appium: http://127.0.0.1:4723/wd/hub automationName: uiautomator2 dontStopAppOnReset: 'false' fullReset: 'false' noReset: 'true' capabilityDescription: "appium\u7684capability\u901A\u7528\u914D\u7F6E\uFF0C\u5176\ \u4E2DautomationName\u4EE3\u8868\u81EA\u52A8\u5316\u7684\u9A71\u52A8\u5F15\u64CE\ \uFF0C\u9664\u4E86\u652F\u6301appium\u7684\u6240\u6709\u5F15\u64CE\u5916\uFF0C\u989D\ \u5916\u589E\u52A0\u4E86adb\u548Cselenium\u7684\u652F\u6301" findBy: xpath findByDescription: "\u9ED8\u8BA4\u751F\u6210\u63A7\u4EF6\u552F\u4E00\u5B9A\u4F4D\u7B26\ \u7684\u8868\u8FBE\u5F0F\u98CE\u683C\uFF0C\u53EF\u9009\u9879 default|android|id|xpath\uFF0C\ \u9ED8\u8BA4\u4F1A\u81EA\u52A8\u5224\u65AD\u662F\u5426\u4F7F\u7528android\u5B9A\u4F4D\ \u6216\u8005ios\u5B9A\u4F4D" firstList: [] firstListDescription: "\u4F18\u5148\u904D\u5386\u5217\u8868\uFF0C\u540C\u65F6\u51FA\ \u73B0\u5728selectedList\u4E0EfirstList\u4E2D\u7684\u63A7\u4EF6\u4F1A\u88AB\u4F18\ \u5148\u904D\u5386" implicitlyWaitCrawl: 0 implicitlyWaitCrawlDescription: "\u5728\u904D\u5386\u9636\u6BB5\u9690\u5F0F\u7B49\u5F85\ \u4E00\u4E2A\u63A7\u4EF6\u51FA\u73B0\u7684\u6700\u5927\u65F6\u95F4 ms" implicitlyWaitTestCase: 3000 implicitlyWaitTestCaseDescription: "\u5728\u6D4B\u8BD5\u7528\u4F8B\u6267\u884C\u9636\ \u6BB5\u9690\u5F0F\u7B49\u5F85\u4E00\u4E2A\u63A7\u4EF6\u51FA\u73B0\u7684\u6700\u5927\ \u65F6\u95F4 ms" lastList: - action: '' actions: [] given: [] then: [] times: -1 when: null xpath: //*[@selected='true']/..//* - action: '' actions: [] given: [] then: [] times: -1 when: null xpath: //*[@selected='true']/../..//* lastListDescription: "\u6700\u540E\u904D\u5386\u5217\u8868\uFF0C\u540C\u65F6\u51FA\ \u73B0\u5728selectedList\u4E0ElastList\u4E2D\u7684\u63A7\u4EF6\u4F1A\u88AB\u6700\ \u540E\u904D\u5386" maxDepth: 10 maxDepthDescription: "\u9ED8\u8BA4\u7684\u6700\u5927\u6DF1\u5EA610, \u7ED3\u5408baseUrl\u53EF\ \u5F88\u597D\u7684\u63A7\u5236\u904D\u5386\u7684\u8303\u56F4" maxTime: 10800 maxTimeDescription: "\u6700\u5927\u8FD0\u884C\u65F6\u95F4" pluginList: [] pluginListDescription: "\u63D2\u4EF6\u5217\u8868\uFF0C\u6682\u65F6\u7981\u7528\uFF0C\ \u592A\u9AD8\u7EA7\u4E86\uFF0C\u5F88\u591A\u4EBA\u4E0D\u4F1A\u7528" reportTitle: AppCrawler reportTitleDescription: "\u62A5\u544A\u7684title" resultDir: data/com.teinproductions.tein.pitrainer resultDirDescription: "\u7ED3\u679C\u76EE\u5F55\uFF0C\u5982\u679C\u4E3A\u7A7A\u4F1A\ \u81EA\u52A8\u521B\u5EFA\u5BF9\u5E94\u65F6\u95F4\u6233_\u62A5\u540D\u7684\u7ED3\u679C\ \u76EE\u5F55" screenshot: true screenshotDescription: "\u662F\u5426\u622A\u56FE" selectedList: - action: '' actions: [] given: [] then: [] times: -1 when: null xpath: //*[contains(name(), 'Button')] - action: '' actions: [] given: [] then: [] times: -1 when: null xpath: //*[contains(name(), 'Text') and @clickable='true'] - action: '' actions: [] given: [] then: [] times: -1 when: null xpath: //*[@clickable='true']//*[contains(name(), 'Text')] - action: '' actions: [] given: [] then: [] times: -1 when: null xpath: //*[contains(name(), 'Image') and @clickable='true'] - action: '' actions: [] given: [] then: [] times: -1 when: null xpath: //*[@clickable='true']/*[contains(name(), 'Image')] - action: '' actions: [] given: [] then: [] times: -1 when: null xpath: //*[contains(@class, 'Text') and @clickable='true'] - action: '' actions: [] given: [] then: [] times: -1 when: null xpath: //*[@clickable='true']//*[contains(@class, 'Text')] - action: '' actions: [] given: [] then: [] times: -1 when: null xpath: //*[contains(@class, 'Image') and @clickable='true'] - action: '' actions: [] given: [] then: [] times: -1 when: null xpath: //*[@clickable='true']/*[contains(@class, 'Image')] - action: '' actions: [] given: [] then: [] times: -1 when: null xpath: //*[@clickable='true' and contains(@class, 'Button')] - action: '' actions: [] given: [] then: [] times: -1 when: null xpath: //*[@clickable='true']//* selectedListDescription: "\u9ED8\u8BA4\u904D\u5386\u5217\u8868\uFF0C\u53EA\u6709\u51FA\ \u73B0\u5728\u8FD9\u4E2A\u5217\u8868\u91CC\u7684\u63A7\u4EF6\u8303\u56F4\u624D\u4F1A\ \u88AB\u904D\u5386" showCancel: true showCancelDescription: "\u662F\u5426\u5C55\u793A\u8DF3\u8FC7\u7684\u63A7\u4EF6\u8BB0\ \u5F55" sortByAttribute: - depth - list - selected sortByAttributeDescription: "\u9646\u7EED\u6839\u636E\u5C5E\u6027\u8FDB\u884C\u904D\ \u5386\u6392\u5E8F\u5FAE\u8C03\uFF0Cdepth\u8868\u793A\u4ECEdom\u4E2D\u6700\u6DF1\ \u5C42\u7684\u63A7\u4EF6\u5F00\u59CB\u904D\u5386\uFF0Clist\u8868\u793Adom\u4E2D\u5217\ \u8868\u4F18\u5148\uFF0Cselected\u8868\u793A\u83DC\u5355\u6700\u540E\u904D\u5386\ \uFF0C\u8FD9\u662F\u9ED8\u8BA4\u89C4\u5219\uFF0C\u4E00\u822C\u4E0D\u9700\u8981\u6539\ \u53D8" suiteName: - //*[@selected='true']//android.widget.TextView/@text suiteNameDescription: "\u62A5\u544A\u4E2D\u7684\u6D4B\u8BD5\u5957\u4EF6\u540D\u5B57\ \u53EF\u4EE5\u7531\u5217\u8868\u5185\u7684\u63A7\u4EF6\u5185\u5BB9\u66FF\u6362\uFF0C\ \u589E\u5F3A\u62A5\u544A\u4E2D\u5173\u952E\u754C\u9762\u7684\u8FA8\u8BC6\u5EA6" tagAttributes: - name() - name - label - resource-id - content-desc - id - name - tag - class tagAttributesDescription: "\u7528\u4E8E\u5224\u65AD\u662F\u5426\u662F\u76F8\u4F3C\u63A7\ \u4EF6\u7684\u5173\u952E\u5C5E\u6027\uFF0C\u7956\u5148\u8282\u70B9\u5177\u5907\u76F8\ \u540C\u7684\u5C5E\u6027\u8BA4\u4E3A\u662F\u76F8\u4F3C" tagLimit: - action: '' actions: [] given: [] then: [] times: 1000 when: null xpath: "\u786E\u5B9A" - action: '' actions: [] given: [] then: [] times: 1000 when: null xpath: "\u53D6\u6D88" - action: '' actions: [] given: [] then: [] times: 1000 when: null xpath: share_comment_guide_btn_name - action: '' actions: [] given: [] then: [] times: 2 when: null xpath: //*[contains(@class, 'List')]//* tagLimitDescription: "\u8BBE\u7F6E\u90E8\u5206\u76F8\u4F3C\u63A7\u4EF6\u7684\u6700\ \u5927\u904D\u5386\u6B21\u6570" tagLimitMax: 2 tagLimitMaxDescription: "\u76F8\u4F3C\u63A7\u4EF6\u6700\u591A\u70B9\u51FB\u51E0\u6B21" testcase: name: AppCrawler TestCase steps: - action: Thread.sleep(1000) actions: [] given: [] then: [] times: -1 when: null xpath: /*/* testcaseDescription: "\u6D4B\u8BD5\u7528\u4F8B\u8BBE\u7F6E\uFF0C\u7528\u4E8E\u904D\ \u5386\u5F00\u59CB\u4E4B\u524D\u7684\u4E00\u4E9B\u524D\u7F6E\u64CD\u4F5C\uFF0C\u6BD4\ \u5982\u81EA\u52A8\u767B\u5F55" triggerActions: - action: '' actions: [] given: [] then: [] times: 3 when: null xpath: permission_allow_button - action: '' actions: [] given: [] then: [] times: 3 when: null xpath: "\u5141\u8BB8" triggerActionsDescription: "\u5728\u904D\u5386\u8FC7\u7A0B\u4E2D\u9700\u8981\u968F\ \u65F6\u5904\u7406\u7684\u4E00\u4E9B\u64CD\u4F5C\uFF0C\u6BD4\u5982\u5F39\u6846\u3001\ \u767B\u5F55\u7B49" urlBlackList: [] urlBlackListDescription: "url\u9ED1\u540D\u5355\uFF0C\u7528\u4E8E\u6392\u9664\u67D0\ \u4E9B\u9875\u9762\u7684\u904D\u5386" urlWhiteList: [] urlWhiteListDescription: "url\u767D\u540D\u5355\uFF0C\u4EC5\u5728\u8FD9\u4E9B\u754C\ \u9762\u5185\u904D\u5386" waitAppLoaded: - action: '' actions: [] given: [] then: [] times: -1 when: null xpath: //*[contains(@text, 'App')] waitAppLoadedDescription: "\u663E\u5F0F\u7B49\u5F85app\u52A0\u8F7D\u5B8C\u6210\u7684\ \u5224\u65AD\u6761\u4EF6" waitAppLoadedTimeout: 10000 waitAppLoadedTimeoutDescription: "\u9690\u5F0F\u7B49\u5F85app\u52A0\u8F7D\u5B8C\u6210\ \u7684\u6700\u5927\u65F6\u95F4 ms" xpathAttributes: - name() - name - label - value - resource-id - content-desc - text - id - name - innerText - tag - class xpathAttributesDescription: "\u5728\u751F\u6210\u4E00\u4E2A\u63A7\u4EF6\u7684\u552F\ \u4E00\u5B9A\u4F4D\u7B26\u4E2D\u5E94\u8BE5\u5305\u542B\u7684\u5173\u952E\u5C5E\u6027"