{"id":127,"date":"2026-07-05T22:58:46","date_gmt":"2026-07-05T14:58:46","guid":{"rendered":"https:\/\/www.deartester.com\/index.php\/2026\/07\/05\/%e5%9f%ba%e4%ba%8ecucumber%e7%9a%84gui%e8%87%aa%e5%8a%a8%e5%8c%96%e6%b5%8b%e8%af%95%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88%e5%ae%9e%e6%96%bd\/"},"modified":"2026-09-03T23:17:44","modified_gmt":"2026-09-03T15:17:44","slug":"%e5%9f%ba%e4%ba%8ecucumber%e7%9a%84gui%e8%87%aa%e5%8a%a8%e5%8c%96%e6%b5%8b%e8%af%95%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88%e5%ae%9e%e6%96%bd","status":"publish","type":"post","link":"https:\/\/www.deartester.com\/index.php\/2026\/07\/05\/%e5%9f%ba%e4%ba%8ecucumber%e7%9a%84gui%e8%87%aa%e5%8a%a8%e5%8c%96%e6%b5%8b%e8%af%95%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88%e5%ae%9e%e6%96%bd\/","title":{"rendered":"\u57fa\u4e8eCucumber\u7684GUI\u81ea\u52a8\u5316\u6d4b\u8bd5\u89e3\u51b3\u65b9\u6848\u5b9e\u65bd"},"content":{"rendered":"<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u5982\u679c\u4f60\u662f\u6d4b\u8bd5\u5de5\u7a0b\u5e08\uff0c\u4e00\u5b9a\u9047\u5230\u8fc7\u8fd9\u6837\u7684\u56f0\u6270\uff1aGUI\u81ea\u52a8\u5316\u6d4b\u8bd5\u811a\u672c\u5199\u597d\u4e86\uff0c\u4f46\u8fc7\u4e0d\u4e86\u591a\u4e45\u9875\u9762\u6539\u4e2aclass\u540d\uff0c\u811a\u672c\u5c31\u5168\u6302\u4e86\uff1b\u7528\u4f8b\u5199\u5f97\u5bc6\u5bc6\u9ebb\u9ebb\u5168\u662f<\/span><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">driver.findElement<\/span><\/code><span leaf=\"\">\uff0c\u8fde\u4ea7\u54c1\u7ecf\u7406\u90fd\u770b\u4e0d\u61c2\uff1b\u56e2\u961f\u534f\u4f5c\u65f6\uff0c\u6d4b\u8bd5\u7528\u4f8b\u548c\u4ee3\u7801\u5404\u5199\u5404\u7684\uff0c\u540e\u671f\u7ef4\u62a4\u6210\u672c\u9ad8\u5f97\u5413\u4eba\u3002<\/span><\/p>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u90a3\u4e48\uff0c\u6709\u6ca1\u6709\u4e00\u79cd\u65b9\u6cd5\u80fd\u8ba9\u6d4b\u8bd5\u7528\u4f8b\u50cf\u8bfb\u6545\u4e8b\u4e00\u6837\u6e05\u6670\uff0c\u8ba9\u5f00\u53d1\u3001\u4ea7\u54c1\u3001\u6d4b\u8bd5\u90fd\u80fd\u53c2\u4e0e\u8fdb\u6765\uff1f\u4eca\u5929\u6211\u8981\u4ecb\u7ecd\u7684<\/span><strong><span leaf=\"\">Cucumber<\/span><\/strong><span leaf=\"\">\u5c31\u662f\u8fd9\u6837\u4e00\u6b3e\u5de5\u5177\u2014\u2014\u5b83\u80fd\u8ba9\u4f60\u7528\u81ea\u7136\u8bed\u8a00\u5199\u6d4b\u8bd5\u7528\u4f8b\uff0c\u540c\u65f6\u8fd8\u80fd\u81ea\u52a8\u6267\u884c\u3002<\/span><\/p>\n<hr style=\"border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);\"  \/>\n<h2 style=\"font-size: 22px;font-weight: 600;color: rgb(26, 26, 26);margin: 35px 0px 18px;padding-left: 15px;border-left: 5px solid rgb(7, 193, 96);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u4e00\u3001\u4e3a\u4ec0\u4e48\u9009\u62e9Cucumber\u505aGUI\u81ea\u52a8\u5316\u6d4b\u8bd5<\/span><\/h2>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u4f20\u7edfGUI\u81ea\u52a8\u5316\u6d4b\u8bd5\u7684\u4e09\u5927\u56f0\u5883<\/span><\/h3>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u5728\u6b63\u5f0f\u5f00\u59cb\u4e4b\u524d\uff0c\u6211\u4eec\u5148\u6765\u804a\u804a\u4f20\u7edfGUI\u81ea\u52a8\u5316\u6d4b\u8bd5\u7684\u75db\u70b9\u3002\u505a\u8fc7Web\u81ea\u52a8\u5316\u7684\u670b\u53cb\u90fd\u77e5\u9053\uff0cSelenium\u867d\u7136\u5f3a\u5927\uff0c\u4f46\u968f\u7740\u9879\u76ee\u89c4\u6a21\u6269\u5927\uff0c\u95ee\u9898\u4f1a\u8d8a\u6765\u8d8a\u591a\uff1a<\/span><\/p>\n<ul style=\"margin: 15px 0px;padding-left: 2em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" class=\"list-paddingleft-1\">\n<li style=\"margin: 8px 0px;\"><strong><span leaf=\"\">\u811a\u672c\u96be\u7ef4\u62a4<\/span><\/strong><br \/>\n<section><span leaf=\"\">\uff1a\u9875\u9762\u5143\u7d20\u4e00\u53d8\uff0c\u51e0\u5341\u4e2a\u6d4b\u8bd5\u811a\u672c\u5168\u8981\u6539\u3002\u67d0\u5929\u524d\u7aef\u91cd\u6784\u4e86\u767b\u5f55\u9875\u9762\uff0c\u4f60\u7684100\u4e2a\u767b\u5f55\u7528\u4f8b\u53ef\u80fd\u77ac\u95f4\u5168\u90e8\u5931\u8d25\u3002<\/span><\/section>\n<\/li>\n<li style=\"margin: 8px 0px;\"><strong><span leaf=\"\">\u7528\u4f8b\u96be\u9605\u8bfb<\/span><\/strong><br \/>\n<section><span leaf=\"\">\uff1a\u4f20\u7edf\u811a\u672c\u91cc\u5145\u65a5\u7740<\/span><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">driver.findElement(By.xpath(\"\/\/input[@id='username']\"))<\/span><\/code><span leaf=\"\">\u8fd9\u6837\u7684\u4ee3\u7801\uff0c\u975e\u6280\u672f\u4eba\u5458\u6839\u672c\u770b\u4e0d\u61c2\uff0c\u66f4\u522b\u8bf4\u8ba9\u4ea7\u54c1\u7ecf\u7406\u53c2\u4e0e\u8bc4\u5ba1\u3002<\/span><\/section>\n<\/li>\n<li style=\"margin: 8px 0px;\"><strong><span leaf=\"\">\u56e2\u961f\u534f\u4f5c\u5dee<\/span><\/strong><br \/>\n<section><span leaf=\"\">\uff1a\u6d4b\u8bd5\u7528\u4f8b\u548c\u5f00\u53d1\u4ee3\u7801\u5206\u79bb\uff0c\u9700\u6c42\u8bc4\u5ba1\u65f6\u5404\u8bf4\u5404\u8bdd\uff0c\u9a8c\u6536\u6807\u51c6\u4e0d\u7edf\u4e00\u3002<\/span><\/section>\n<\/li>\n<\/ul>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">BDD\u7406\u5ff5\u5e26\u6765\u7684\u53d8\u9769<\/span><\/h3>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u8fd9\u65f6\u5019\uff0c<\/span><strong><span leaf=\"\">BDD\uff08Behavior Driven Development\uff0c\u884c\u4e3a\u9a71\u52a8\u5f00\u53d1\uff09<\/span><\/strong><span leaf=\"\">\u7406\u5ff5\u5e94\u8fd0\u800c\u751f\u3002BDD\u7684\u6838\u5fc3\u601d\u60f3\u662f\uff1a\u7528\u5927\u5bb6\u90fd\u770b\u5f97\u61c2\u7684\u81ea\u7136\u8bed\u8a00\u6765\u63cf\u8ff0\u7cfb\u7edf\u884c\u4e3a\uff0c\u8ba9\u6280\u672f\u56e2\u961f\u548c\u4e1a\u52a1\u56e2\u961f\u80fd\u591f\u65e0\u969c\u788d\u6c9f\u901a\u3002<\/span><\/p>\n<blockquote style=\"background: rgb(248, 248, 248);border-left: 4px solid rgb(7, 193, 96);margin: 20px 0px;padding: 15px 20px;font-size: 15px;color: rgb(85, 85, 85);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\">\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;\"><span leaf=\"\">BDD\u4e0d\u662f\u8981\u53d6\u4ee3\u4f20\u7edf\u7684\u81ea\u52a8\u5316\u6d4b\u8bd5\uff0c\u800c\u662f\u8981\u89e3\u51b3&#8221;\u6d4b\u8bd5\u7528\u4f8b\u7684\u53ef\u8bfb\u6027&#8221;\u548c&#8221;\u56e2\u961f\u534f\u4f5c&#8221;\u8fd9\u4e24\u4e2a\u95ee\u9898\u3002<\/span><\/p>\n<\/blockquote>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">Cucumber\u5982\u4f55\u89e3\u51b3\u8fd9\u4e9b\u95ee\u9898<\/span><\/h3>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">Cucumber\u662fBDD\u9886\u57df\u6700\u6d41\u884c\u7684\u5f00\u6e90\u5de5\u5177\uff0c\u5b83\u5141\u8bb8\u4f60\u7528\u4e00\u79cd\u53eb\u505a<\/span><strong><span leaf=\"\">Gherkin<\/span><\/strong><span leaf=\"\">\u7684\u8bed\u8a00\u6765\u7f16\u5199\u6d4b\u8bd5\u7528\u4f8b\u3002\u8fd9\u79cd\u8bed\u8a00\u4f7f\u7528\u7b80\u5355\u7684\u82f1\u6587\u5173\u952e\u5b57\uff08Given\/When\/Then\uff09\uff0c\u5373\u4f7f\u4f60\u4e0d\u662f\u7a0b\u5e8f\u5458\uff0c\u4e5f\u80fd\u8f7b\u677e\u7406\u89e3\u6d4b\u8bd5\u7528\u4f8b\u7684\u542b\u4e49\u3002<\/span><\/p>\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"576\">\n<p data-pm-slice=\"0 0 []\"><span leaf=\"\">\ud83d\udccb Cucumber\u6d4b\u8bd5\u7528\u4f8b\u793a\u4f8b<\/span><\/p>\n<pre style=\"background: rgb(245, 245, 245);color: rgb(51, 51, 51);padding: 18px;border-radius: 8px;font-size: 14px;line-height: 1.6;overflow-x: auto;margin: 0px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: center;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u529f\u80fd: \u7528\u6237\u767b\u5f55\u7cfb\u7edf<\/span><\/pre>\n<pre style=\"background: rgb(245, 245, 245);color: rgb(51, 51, 51);padding: 18px;border-radius: 8px;font-size: 14px;line-height: 1.6;overflow-x: auto;margin: 0px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: center;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u573a\u666f: \u4f7f\u7528\u6b63\u786e\u8d26\u53f7\u5bc6\u7801\u767b\u5f55\u6210\u529f<\/span><\/pre>\n<pre style=\"background: rgb(245, 245, 245);color: rgb(51, 51, 51);padding: 18px;border-radius: 8px;font-size: 14px;line-height: 1.6;overflow-x: auto;margin: 0px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: center;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u524d\u63d0 \u7528\u6237\u6253\u5f00\u767b\u5f55\u9875\u9762<\/span><\/pre>\n<pre style=\"background: rgb(245, 245, 245);color: rgb(51, 51, 51);padding: 18px;border-radius: 8px;font-size: 14px;line-height: 1.6;overflow-x: auto;margin: 0px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: center;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u5f53 \u8f93\u5165\u7528\u6237\u540d \"testuser\"<\/span><\/pre>\n<pre style=\"background: rgb(245, 245, 245);color: rgb(51, 51, 51);padding: 18px;border-radius: 8px;font-size: 14px;line-height: 1.6;overflow-x: auto;margin: 0px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: center;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u5e76\u4e14 \u8f93\u5165\u5bc6\u7801 \"Test123456\"<\/span><\/pre>\n<pre style=\"background: rgb(245, 245, 245);color: rgb(51, 51, 51);padding: 18px;border-radius: 8px;font-size: 14px;line-height: 1.6;overflow-x: auto;margin: 0px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: center;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u5e76\u4e14 \u70b9\u51fb\u767b\u5f55\u6309\u94ae<\/span><\/pre>\n<pre style=\"background: rgb(245, 245, 245);color: rgb(51, 51, 51);padding: 18px;border-radius: 8px;font-size: 14px;line-height: 1.6;overflow-x: auto;margin: 0px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: center;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u90a3\u4e48 \u5e94\u8be5\u663e\u793a\u6b22\u8fce\u4fe1\u606f \"\u6b22\u8fce\u56de\u6765\uff0ctestuser\"<\/span><\/pre>\n<pre style=\"background: rgb(245, 245, 245);color: rgb(51, 51, 51);padding: 18px;border-radius: 8px;font-size: 14px;line-height: 1.6;overflow-x: auto;margin: 0px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: center;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u573a\u666f: \u4f7f\u7528\u9519\u8bef\u5bc6\u7801\u767b\u5f55\u5931\u8d25<\/span><\/pre>\n<pre style=\"background: rgb(245, 245, 245);color: rgb(51, 51, 51);padding: 18px;border-radius: 8px;font-size: 14px;line-height: 1.6;overflow-x: auto;margin: 0px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: center;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u524d\u63d0 \u7528\u6237\u6253\u5f00\u767b\u5f55\u9875\u9762<\/span><\/pre>\n<pre style=\"background: rgb(245, 245, 245);color: rgb(51, 51, 51);padding: 18px;border-radius: 8px;font-size: 14px;line-height: 1.6;overflow-x: auto;margin: 0px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: center;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u5f53 \u8f93\u5165\u7528\u6237\u540d \"testuser\"<\/span><\/pre>\n<pre style=\"background: rgb(245, 245, 245);color: rgb(51, 51, 51);padding: 18px;border-radius: 8px;font-size: 14px;line-height: 1.6;overflow-x: auto;margin: 0px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: center;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u5e76\u4e14 \u8f93\u5165\u9519\u8bef\u5bc6\u7801 \"wrongpass\"<\/span><\/pre>\n<pre style=\"background: rgb(245, 245, 245);color: rgb(51, 51, 51);padding: 18px;border-radius: 8px;font-size: 14px;line-height: 1.6;overflow-x: auto;margin: 0px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: center;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u5e76\u4e14 \u70b9\u51fb\u767b\u5f55\u6309\u94ae<\/span><\/pre>\n<pre style=\"background: rgb(245, 245, 245);color: rgb(51, 51, 51);padding: 18px;border-radius: 8px;font-size: 14px;line-height: 1.6;overflow-x: auto;margin: 0px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: center;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u90a3\u4e48 \u5e94\u8be5\u663e\u793a\u9519\u8bef\u63d0\u793a \"\u7528\u6237\u540d\u6216\u5bc6\u7801\u9519\u8bef\"<\/span><\/pre>\n<section><span style=\"color: rgb(136, 136, 136);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 13px;font-style: italic;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: center;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;display: inline !important;float: none;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u25b2 \u4f7f\u7528Gherkin\u8bed\u8a00\u7f16\u5199\u7684\u6d4b\u8bd5\u7528\u4f8b\uff0c\u7528\u81ea\u7136\u8bed\u8a00\u63cf\u8ff0\u767b\u5f55\u529f\u80fd<\/span><\/span><\/section>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<section style=\"text-indent: 2em;\"><span style=\"color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;float: none;display: inline !important;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u770b\u770b\u4e0a\u9762\u7684\u4f8b\u5b50\u2014\u2014\u5373\u4f7f\u4f60\u662f\u4ea7\u54c1\u7ecf\u7406\u6216\u8005\u5b8c\u5168\u4e0d\u61c2\u4ee3\u7801\uff0c\u4e5f\u80fd\u6e05\u695a\u5730\u77e5\u9053\u8fd9\u4e2a\u529f\u80fd\u8981\u6d4b\u4ec0\u4e48\u3002\u8fd9\u5c31\u662fCucumber\u7684\u9b45\u529b\u3002<\/span><\/span><\/section>\n<hr style=\"border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);\"  \/>\n<h2 style=\"font-size: 22px;font-weight: 600;color: rgb(26, 26, 26);margin: 35px 0px 18px;padding-left: 15px;border-left: 5px solid rgb(7, 193, 96);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u4e8c\u3001\u8ba4\u8bc6Cucumber\uff1a\u6838\u5fc3\u6982\u5ff5\u4e0e\u5de5\u4f5c\u539f\u7406<\/span><\/h2>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">Cucumber\u662f\u4ec0\u4e48<\/span><\/h3>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">Cucumber\u662f\u4e00\u4e2a\u652f\u6301<\/span><strong><span leaf=\"\">\u884c\u4e3a\u9a71\u52a8\u5f00\u53d1\uff08BDD\uff09<\/span><\/strong><span leaf=\"\">\u7684\u6d4b\u8bd5\u6846\u67b6\u3002\u5b83\u7684\u4e3b\u8981\u7279\u70b9\u662f\u7528<\/span><strong><span leaf=\"\">Gherkin<\/span><\/strong><span leaf=\"\">\u8bed\u8a00\u7f16\u5199\u6d4b\u8bd5\u7528\u4f8b\uff0c\u7528\u81ea\u7136\u8bed\u8a00\u63cf\u8ff0\u7cfb\u7edf\u7684\u9884\u671f\u884c\u4e3a\uff0c\u7136\u540e\u901a\u8fc7&#8221;\u7c98\u5408\u4ee3\u7801&#8221;\u5c06\u8fd9\u4e9b\u81ea\u7136\u8bed\u8a00\u63cf\u8ff0\u4e0e\u5b9e\u9645\u7684\u6280\u672f\u5b9e\u73b0\u8fde\u63a5\u8d77\u6765\u3002<\/span><\/p>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">Cucumber\u6700\u65e9\u4e8e2008\u5e74\u8bde\u751f\u4e8eRuby\u793e\u533a\uff0c\u76ee\u524d\u5df2\u7ecf\u652f\u6301Java\u3001JavaScript\u3001Python\u3001C<a class=\"wx_topic_link\" topic-id=\"mr7vy37y-0u8caq\" style=\"color: #576B95 !important;\" data-topic=\"1\" data-recommend=\"\">#\u7b49\u591a\u79cd\u7f16\u7a0b\u8bed\u8a00<\/a>\u3002\u5728\u6d4b\u8bd5\u9886\u57df\uff0cCucumber\u901a\u5e38\u4e0eSelenium\u3001Appium\u7b49\u5de5\u5177\u7ed3\u5408\u4f7f\u7528\uff0c\u7528\u4e8eGUI\u81ea\u52a8\u5316\u6d4b\u8bd5\u3002<\/span><\/p>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u6838\u5fc3\u7ec4\u4ef6\u8be6\u89e3<\/span><\/h3>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u8981\u7406\u89e3Cucumber\uff0c\u4f60\u9700\u8981\u638c\u63e1\u4ee5\u4e0b\u4e09\u4e2a\u6838\u5fc3\u6982\u5ff5\uff1a<\/span><\/p>\n<h4 style=\"font-size: 16px;font-weight: 600;color: rgb(85, 85, 85);margin: 20px 0px 10px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">1. Feature\u6587\u4ef6<\/span><\/h4>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">Feature\u6587\u4ef6\u662fCucumber\u6d4b\u8bd5\u7528\u4f8b\u7684\u8f7d\u4f53\uff0c\u4f7f\u7528<\/span><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">.feature<\/span><\/code><span leaf=\"\">\u4f5c\u4e3a\u6587\u4ef6\u6269\u5c55\u540d\u3002\u5728Feature\u6587\u4ef6\u4e2d\uff0c\u4f60\u7528Gherkin\u8bed\u8a00\u63cf\u8ff0\u7cfb\u7edf\u529f\u80fd\uff0c\u6bcf\u4e2a\u529f\u80fd\uff08Feature\uff09\u7531\u591a\u4e2a\u573a\u666f\uff08Scenario\uff09\u7ec4\u6210\u3002<\/span><\/p>\n<h4 style=\"font-size: 16px;font-weight: 600;color: rgb(85, 85, 85);margin: 20px 0px 10px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">2. Step Definitions<\/span><\/h4>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">Step Definitions\u662fJava\/Python\/\u5176\u4ed6\u8bed\u8a00\u7684\u4ee3\u7801\uff0c\u5b83\u5c06Gherkin\u4e2d\u7684\u6bcf\u4e2a\u6b65\u9aa4\uff08Step\uff09\u4e0e\u5b9e\u9645\u7684\u81ea\u52a8\u5316\u4ee3\u7801\u8fde\u63a5\u8d77\u6765\u3002\u6bd4\u5982&#8221;\u70b9\u51fb\u767b\u5f55\u6309\u94ae&#8221;\u8fd9\u4e2a\u6b65\u9aa4\uff0c\u5728Step Definitions\u4e2d\u53ef\u80fd\u5bf9\u5e94<\/span><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">driver.findElement(By.id(\"login-btn\")).click()<\/span><\/code><span leaf=\"\">\u3002<\/span><\/p>\n<h4 style=\"font-size: 16px;font-weight: 600;color: rgb(85, 85, 85);margin: 20px 0px 10px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">3. Test Runner<\/span><\/h4>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">Test Runner\u662f\u6d4b\u8bd5\u8fd0\u884c\u5668\uff0c\u8d1f\u8d23\u542f\u52a8Cucumber\u6846\u67b6\uff0c\u8bfb\u53d6Feature\u6587\u4ef6\uff0c\u5339\u914dStep Definitions\uff0c\u6267\u884c\u6d4b\u8bd5\u5e76\u751f\u6210\u62a5\u544a\u3002\u5e38\u7528\u7684Runner\u5305\u62ecJUnit Runner\uff08Java\uff09\u548cCucumber CLI\u3002<\/span><\/p>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">Cucumber\u5de5\u4f5c\u6d41\u7a0b<\/span><\/h3>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u7406\u89e3Cucumber\u7684\u5de5\u4f5c\u6d41\u7a0b\u5f88\u91cd\u8981\uff0c\u5b83\u51b3\u5b9a\u4e86\u4f60\u5728\u5b9e\u9645\u9879\u76ee\u4e2d\u5982\u4f55\u7ec4\u7ec7\u4ee3\u7801\uff1a<\/span><\/p>\n<section style=\"text-align: center;\" nodeleaf=\"\">\n<figure class=\"wx-qr-wrap\"><img decoding=\"async\" class=\"rich_pages wxw-img\" data-aistatus=\"1\" data-imgfileid=\"100000457\" data-s=\"300,640\" data-type=\"png\" type=\"block\" src=\"https:\/\/mmbiz.qpic.cn\/sz_mmbiz_png\/BWmfcibGhS1KUShatuck6LEbnGVnlvYVDFdAAMtHUqibB2hibloncts0FRDrTXdXldKw2cbmcLOzOguym09lCCAEJ7bTYd4B62xDYuakVfInpo\/640?wx_fmt=png&#038;from=appmsg\" \/><figcaption class=\"wx-qr-tip\"><img decoding=\"async\" src=\"https:\/\/www.deartester.com\/wp-content\/uploads\/2026\/09\/wechat-qr.jpg\" alt=\"\u5fae\u4fe1\u516c\u4f17\u53f7\u4e8c\u7ef4\u7801\" loading=\"lazy\"><span>\u56fe\u7247\u5f15\u81ea\u5fae\u4fe1\u516c\u4f17\u53f7\uff0c\u626b\u7801\u5173\u6ce8\u9605\u8bfb\u539f\u6587<\/span><\/figcaption><\/figure>\n<\/section>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u5177\u4f53\u6765\u8bf4\uff0cCucumber\u6267\u884c\u6d4b\u8bd5\u65f6\u4f1a\u7ecf\u5386\u4ee5\u4e0b\u6b65\u9aa4\uff1a<\/span><\/p>\n<ol style=\"margin: 15px 0px;padding-left: 2em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" class=\"list-paddingleft-1\">\n<li style=\"margin: 8px 0px;\">\n<section><span leaf=\"\">\u8bfb\u53d6\u6240\u6709<\/span><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">.feature<\/span><\/code><span leaf=\"\">\u6587\u4ef6\uff0c\u89e3\u6790Gherkin\u8bed\u6cd5<\/span><\/section>\n<\/li>\n<li style=\"margin: 8px 0px;\">\n<section><span leaf=\"\">\u5bf9\u4e8e\u6bcf\u4e2a\u573a\u666f\u4e2d\u7684\u6b65\u9aa4\uff0c\u6309\u987a\u5e8f\u67e5\u627e\u5bf9\u5e94\u7684Step Definitions<\/span><\/section>\n<\/li>\n<li style=\"margin: 8px 0px;\">\n<section><span leaf=\"\">\u627e\u5230\u5339\u914d\u7684Step Definition\u540e\uff0c\u6267\u884c\u5176\u4e2d\u7684\u4ee3\u7801<\/span><\/section>\n<\/li>\n<li style=\"margin: 8px 0px;\">\n<section><span leaf=\"\">\u6240\u6709\u6b65\u9aa4\u6267\u884c\u5b8c\u6210\u540e\uff0c\u751f\u6210\u6d4b\u8bd5\u62a5\u544a<\/span><\/section>\n<\/li>\n<li style=\"margin: 8px 0px;\">\n<section><span leaf=\"\">\u5982\u679c\u67d0\u4e2a\u6b65\u9aa4\u627e\u4e0d\u5230\u5bf9\u5e94\u7684Step Definition\uff0c\u6d4b\u8bd5\u4f1a\u5931\u8d25\u5e76\u62a5\u9519<\/span><\/section>\n<\/li>\n<\/ol>\n<hr style=\"border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);\"  \/>\n<h2 style=\"font-size: 22px;font-weight: 600;color: rgb(26, 26, 26);margin: 35px 0px 18px;padding-left: 15px;border-left: 5px solid rgb(7, 193, 96);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u4e09\u3001\u6280\u672f\u6808\u5168\u666f\u56fe<\/span><\/h2>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u5728\u5f00\u59cb\u52a8\u624b\u4e4b\u524d\uff0c\u6211\u4eec\u5148\u4e86\u89e3\u4e00\u4e0b\u672c\u6587\u5c06\u4f7f\u7528\u7684\u5b8c\u6574\u6280\u672f\u6808\uff1a<\/span><\/p>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: center;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span style=\"color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 600;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;float: none;display: inline !important;\" data-pm-slice=\"0 0 []\"><span leaf=\"\"><span textstyle=\"\" style=\"font-size: 18px;font-weight: bold;\">\ud83d\udee0\ufe0f \u6280\u672f\u6808\u67b6\u6784\u56fe<\/span><\/span><\/span><\/p>\n<section style=\"text-align: center;\" nodeleaf=\"\">\n<figure class=\"wx-qr-wrap\"><img decoding=\"async\" class=\"rich_pages wxw-img\" data-aistatus=\"1\" data-imgfileid=\"100000458\" data-s=\"300,640\" data-type=\"png\" type=\"block\" src=\"https:\/\/mmbiz.qpic.cn\/sz_mmbiz_png\/BWmfcibGhS1Ln3DokyCVOia0QlpNc8KcKcxWIoC7McpvUJLm4tj91TULGK3UdXxaCJoahAvh297ib08ukLBSpQDR4YCwiaXs0EGG49Tn5woMoRc\/640?wx_fmt=png&#038;from=appmsg\" \/><figcaption class=\"wx-qr-tip\"><img decoding=\"async\" src=\"https:\/\/www.deartester.com\/wp-content\/uploads\/2026\/09\/wechat-qr.jpg\" alt=\"\u5fae\u4fe1\u516c\u4f17\u53f7\u4e8c\u7ef4\u7801\" loading=\"lazy\"><span>\u56fe\u7247\u5f15\u81ea\u5fae\u4fe1\u516c\u4f17\u53f7\uff0c\u626b\u7801\u5173\u6ce8\u9605\u8bfb\u539f\u6587<\/span><\/figcaption><\/figure>\n<\/section>\n<section style=\"text-indent: 2em;text-align: center;\"><span style=\"color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;float: none;display: inline !important;\" data-pm-slice=\"0 0 []\"><span style=\"color: rgb(136, 136, 136);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 13px;font-style: italic;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;float: none;display: inline !important;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u25b2 Cucumber + Selenium + JUnit \u6280\u672f\u67b6\u6784<\/span><\/span><\/span><\/section>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u4e3a\u4ec0\u4e48\u9009\u62e9\u8fd9\u4e2a\u7ec4\u5408\uff1f\u539f\u56e0\u5982\u4e0b\uff1a<\/span><\/p>\n<ul style=\"margin: 15px 0px;padding-left: 2em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" class=\"list-paddingleft-1\">\n<li style=\"margin: 8px 0px;\"><strong><span leaf=\"\">Java<\/span><\/strong><br \/>\n<section><span leaf=\"\">\uff1a\u4f01\u4e1a\u7ea7\u5e94\u7528\u6700\u5e38\u7528\u7684\u8bed\u8a00\uff0c\u751f\u6001\u6210\u719f\uff0c\u5b66\u4e60\u8d44\u6e90\u4e30\u5bcc<\/span><\/section>\n<\/li>\n<li style=\"margin: 8px 0px;\"><strong><span leaf=\"\">Maven<\/span><\/strong><br \/>\n<section><span leaf=\"\">\uff1a\u4f18\u79c0\u7684\u4f9d\u8d56\u7ba1\u7406\u5de5\u5177\uff0c\u4e00\u952e\u4e0b\u8f7d\u6240\u6709\u4f9d\u8d56<\/span><\/section>\n<\/li>\n<li style=\"margin: 8px 0px;\"><strong><span leaf=\"\">Selenium WebDriver<\/span><\/strong><br \/>\n<section><span leaf=\"\">\uff1aWeb\u81ea\u52a8\u5316\u9886\u57df\u7684\u4e8b\u5b9e\u6807\u51c6\uff0c\u652f\u6301\u6240\u6709\u4e3b\u6d41\u6d4f\u89c8\u5668<\/span><\/section>\n<\/li>\n<li style=\"margin: 8px 0px;\"><strong><span leaf=\"\">Cucumber<\/span><\/strong><br \/>\n<section><span leaf=\"\">\uff1aBDD\u6846\u67b6\u7684\u9886\u5bfc\u8005\uff0c\u793e\u533a\u6d3b\u8dc3\uff0c\u6587\u6863\u5b8c\u5584<\/span><\/section>\n<\/li>\n<li style=\"margin: 8px 0px;\"><strong><span leaf=\"\">IntelliJ IDEA<\/span><\/strong><br \/>\n<section><span leaf=\"\">\uff1aJava\u5f00\u53d1\u9996\u9009IDE\uff0c\u5bf9Cucumber\u6709\u826f\u597d\u7684\u8bed\u6cd5\u652f\u6301<\/span><\/section>\n<\/li>\n<\/ul>\n<hr style=\"border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);\"  \/>\n<h2 style=\"font-size: 22px;font-weight: 600;color: rgb(26, 26, 26);margin: 35px 0px 18px;padding-left: 15px;border-left: 5px solid rgb(7, 193, 96);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u56db\u3001\u73af\u5883\u51c6\u5907\uff1a\u4ece\u96f6\u5f00\u59cb\u642d\u5efa\u5f00\u53d1\u73af\u5883<\/span><\/h2>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u73b0\u5728\u5f00\u59cb\u52a8\u624b\u642d\u5efa\u73af\u5883\u3002\u6211\u4f1a\u5047\u8bbe\u4f60\u662f\u4ece\u96f6\u5f00\u59cb\uff0c\u4e00\u6b65\u4e00\u6b65\u8be6\u7ec6\u8bf4\u660e\u3002<\/span><\/p>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">4.1 \u5b89\u88c5JDK<\/span><\/h3>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">Cucumber\u548cSelenium\u90fd\u9700\u8981Java\u8fd0\u884c\u73af\u5883\uff0c\u6240\u4ee5JDK\u662f\u5fc5\u987b\u7684\u3002<\/span><\/p>\n<h4 style=\"font-size: 16px;font-weight: 600;color: rgb(85, 85, 85);margin: 20px 0px 10px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u6b65\u9aa4\u4e00\uff1a\u4e0b\u8f7dJDK<\/span><\/h4>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u8bbf\u95eeOracle\u5b98\u7f51\u6216\u4f7f\u7528OpenJDK\uff0c\u4e0b\u8f7dJDK 11\u6216\u66f4\u9ad8\u7248\u672c\uff08\u5efa\u8baeJDK 17\uff09\uff1a<\/span><\/p>\n<ul style=\"margin: 15px 0px;padding-left: 2em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" class=\"list-paddingleft-1\">\n<li style=\"margin: 8px 0px;\">\n<section><span leaf=\"\">Oracle JDK\uff1ahttps:\/\/www.oracle.com\/java\/technologies\/downloads\/<\/span><\/section>\n<\/li>\n<li style=\"margin: 8px 0px;\">\n<section><span leaf=\"\">OpenJDK\uff08\u514d\u8d39\uff09\uff1ahttps:\/\/adoptium.net\/<\/span><\/section>\n<\/li>\n<\/ul>\n<p><span leaf=\"\">\ud83d\udca1 \u63d0\u793a<\/span><\/p>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;\"><span leaf=\"\">\u5efa\u8bae\u4e0b\u8f7d\u5b89\u88c5\u7248\uff08.exe\u6216.msi\uff09\uff0c\u5b89\u88c5\u8fc7\u7a0b\u4f1a\u81ea\u52a8\u914d\u7f6e\u73af\u5883\u53d8\u91cf\uff0c\u6bd4\u89e3\u538b\u7248\u66f4\u7701\u5fc3\u3002<\/span><\/p>\n<h4 style=\"font-size: 16px;font-weight: 600;color: rgb(85, 85, 85);margin: 20px 0px 10px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u6b65\u9aa4\u4e8c\uff1a\u914d\u7f6e\u73af\u5883\u53d8\u91cf<\/span><\/h4>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u5b89\u88c5\u5b8c\u6210\u540e\uff0c\u9700\u8981\u914d\u7f6e\u4e24\u4e2a\u73af\u5883\u53d8\u91cf\uff1a<\/span><\/p>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"makefile\"><code><span leaf=\"\"><span class=\"code-snippet__section\">\u53d8\u91cf\u540d: JAVA_HOME<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__section\">\u53d8\u91cf\u503c: C:\\Program Files\\Java\\jdk-17<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__section\">\u53d8\u91cf\u540d: Path\uff08\u8ffd\u52a0\uff09<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__section\">\u53d8\u91cf\u503c: %JAVA_HOME%\\bin<\/span><\/span><\/code><\/pre>\n<\/section>\n<h4 style=\"font-size: 16px;font-weight: 600;color: rgb(85, 85, 85);margin: 20px 0px 10px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u6b65\u9aa4\u4e09\uff1a\u9a8c\u8bc1\u5b89\u88c5<\/span><\/h4>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u6253\u5f00\u547d\u4ee4\u63d0\u793a\u7b26\uff08Win+R\uff0c\u8f93\u5165cmd\uff09\uff0c\u8f93\u5165\u4ee5\u4e0b\u547d\u4ee4\u9a8c\u8bc1\uff1a<\/span><\/p>\n<pre style=\"background-color: rgb(26, 26, 26);color: rgb(230, 230, 230);padding: 18px;border-radius: 8px;font-size: 14px;line-height: 1.6;overflow-x: auto;margin: 20px 0px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">java -version<\/span><\/pre>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u5982\u679c\u663e\u793a\u7c7b\u4f3c\u4ee5\u4e0b\u5185\u5bb9\uff0c\u8bf4\u660eJDK\u5b89\u88c5\u6210\u529f\uff1a<\/span><\/p>\n<pre style=\"background: rgb(245, 245, 245);color: rgb(51, 51, 51);padding: 18px;border-radius: 8px;font-size: 14px;line-height: 1.6;overflow-x: auto;margin: 20px 0px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">java version \"17.0.5\" 2022-10-18 Java(TM) SE Runtime Environment (build 17.0.5+9) Java HotSpot(TM) 64-Bit Server VM (build 17.0.5+9, mixed mode)<\/span><\/pre>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">4.2 \u5b89\u88c5Maven<\/span><\/h3>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">Maven\u662fJava\u9879\u76ee\u7684\u4f9d\u8d56\u7ba1\u7406\u5de5\u5177\uff0c\u7c7b\u4f3c\u4e8e\u524d\u7aef\u7684npm\u3002\u5b89\u88c5Maven\u540e\uff0c\u4f60\u4e0d\u9700\u8981\u624b\u52a8\u4e0b\u8f7d\u5404\u79cdjar\u5305\uff0cMaven\u4f1a\u81ea\u52a8\u5e2e\u4f60\u641e\u5b9a\u3002<\/span><\/p>\n<h4 style=\"font-size: 16px;font-weight: 600;color: rgb(85, 85, 85);margin: 20px 0px 10px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u6b65\u9aa4\u4e00\uff1a\u4e0b\u8f7dMaven<\/span><\/h4>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u8bbf\u95eeMaven\u5b98\u7f51\u4e0b\u8f7d\u538b\u7f29\u5305\uff1ahttps:\/\/maven.apache.org\/download.cgi<\/span><\/p>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u4e0b\u8f7d<\/span><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">apache-maven-3.9.x-bin.zip<\/span><\/code><span leaf=\"\">\uff0c\u89e3\u538b\u5230\u672c\u5730\u76ee\u5f55\uff0c\u6bd4\u5982<\/span><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">C:\\apache-maven<\/span><\/code><span leaf=\"\">\u3002<\/span><\/p>\n<h4 style=\"font-size: 16px;font-weight: 600;color: rgb(85, 85, 85);margin: 20px 0px 10px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u6b65\u9aa4\u4e8c\uff1a\u914d\u7f6e\u73af\u5883\u53d8\u91cf<\/span><\/h4>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"makefile\"><code><span leaf=\"\"><span class=\"code-snippet__section\">\u53d8\u91cf\u540d: MAVEN_HOME<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__section\">\u53d8\u91cf\u503c: C:\\apache-maven<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__section\">\u53d8\u91cf\u540d: Path\uff08\u8ffd\u52a0\uff09<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__section\">\u53d8\u91cf\u503c: %MAVEN_HOME%\\bin<\/span><\/span><\/code><\/pre>\n<\/section>\n<h4 style=\"font-size: 16px;font-weight: 600;color: rgb(85, 85, 85);margin: 20px 0px 10px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u6b65\u9aa4\u4e09\uff1a\u914d\u7f6e\u56fd\u5185\u955c\u50cf\uff08\u52a0\u901f\u4e0b\u8f7d\uff09<\/span><\/h4>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u6253\u5f00Maven\u5b89\u88c5\u76ee\u5f55\u4e0b\u7684<\/span><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">conf\/settings.xml<\/span><\/code><span leaf=\"\">\u6587\u4ef6\uff0c\u5728<\/span><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">&lt;mirrors&gt;<\/span><\/code><span leaf=\"\">\u6807\u7b7e\u4e2d\u6dfb\u52a0\u963f\u91cc\u4e91\u955c\u50cf\uff1a<\/span><\/p>\n<pre style=\"background-color: rgb(26, 26, 26);color: rgb(230, 230, 230);padding: 18px;border-radius: 8px;font-size: 14px;line-height: 1.6;overflow-x: auto;margin: 20px 0px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">&lt;mirrors&gt; &nbsp; &lt;mirror&gt; &nbsp; &nbsp; &lt;id&gt;aliyunmaven&lt;\/id&gt; &nbsp; &nbsp; &lt;mirrorOf&gt;*&lt;\/mirrorOf&gt; &nbsp; &nbsp; &lt;name&gt;\u963f\u91cc\u4e91\u516c\u5171\u4ed3\u5e93&lt;\/name&gt; &nbsp; &nbsp; &lt;url&gt;https:\/\/maven.aliyun.com\/repository\/public&lt;\/url&gt; &nbsp; &lt;\/mirror&gt; &lt;\/mirrors&gt;<\/span><\/pre>\n<h4 style=\"font-size: 16px;font-weight: 600;color: rgb(85, 85, 85);margin: 20px 0px 10px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u6b65\u9aa4\u56db\uff1a\u9a8c\u8bc1\u5b89\u88c5<\/span><\/h4>\n<pre style=\"background-color: rgb(26, 26, 26);color: rgb(230, 230, 230);padding: 18px;border-radius: 8px;font-size: 14px;line-height: 1.6;overflow-x: auto;margin: 20px 0px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">mvn -version<\/span><\/pre>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u6210\u529f\u540e\u4f1a\u663e\u793aMaven\u7248\u672c\u4fe1\u606f\u3002<\/span><\/p>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">4.3 \u5b89\u88c5IntelliJ IDEA<\/span><\/h3>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">IntelliJ IDEA\u662fJetBrains\u516c\u53f8\u5f00\u53d1\u7684Java IDE\uff0c\u6709Community\uff08\u514d\u8d39\uff09\u548cUltimate\uff08\u4ed8\u8d39\uff09\u4e24\u4e2a\u7248\u672c\u3002\u5bf9\u4e8eCucumber\u6d4b\u8bd5\u5f00\u53d1\uff0cCommunity\u7248\u672c\u5b8c\u5168\u591f\u7528\u3002<\/span><\/p>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u4e0b\u8f7d\u5730\u5740\uff1ahttps:\/\/www.jetbrains.com\/idea\/download\/<\/span><\/p>\n<p style=\"text-align: center;\"><span leaf=\"\">\ud83d\udca1&nbsp;<span textstyle=\"\" style=\"color: #ff2941;\">\u63d0\u793a<\/span><\/span><\/p>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;\"><span leaf=\"\">\u5b89\u88c5\u5b8c\u6210\u540e\uff0c\u8bb0\u5f97\u5b89\u88c5Cucumber\u76f8\u5173\u63d2\u4ef6\uff1a<\/span><strong><span leaf=\"\">Cucumber for Java<\/span><\/strong><span leaf=\"\">\u548c<\/span><strong><span leaf=\"\">Gherkin<\/span><\/strong><span leaf=\"\">\u3002\u6253\u5f00IDEA \u2192 File \u2192 Settings \u2192 Plugins\uff0c\u641c\u7d22\u5e76\u5b89\u88c5\u5373\u53ef\u3002<\/span><\/p>\n<hr style=\"border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);\"  \/>\n<h2 style=\"font-size: 22px;font-weight: 600;color: rgb(26, 26, 26);margin: 35px 0px 18px;padding-left: 15px;border-left: 5px solid rgb(7, 193, 96);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u4e94\u3001\u521b\u5efa\u4f60\u7684\u7b2c\u4e00\u4e2aCucumber\u9879\u76ee<\/span><\/h2>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">5.1 \u65b9\u6cd5\u4e00\uff1a\u4f7f\u7528IDEA\u521b\u5efaMaven\u9879\u76ee<\/span><\/h3>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u8fd9\u662f\u6700\u7b80\u5355\u7684\u65b9\u6cd5\uff0c\u63a8\u8350\u65b0\u624b\u4f7f\u7528\uff1a<\/span><\/p>\n<ol style=\"margin: 15px 0px;padding: 0px;counter-reset: step-counter 0;list-style: none;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" class=\"list-paddingleft-1\">\n<li style=\" margin: 15px 0px;counter-increment: step-counter 1; padding-left: 40px; \">\n<section><span leaf=\"\">\u6253\u5f00IntelliJ IDEA\uff0c\u9009\u62e9&nbsp;<\/span><strong><span leaf=\"\">File \u2192 New \u2192 Project<\/span><\/strong><\/section>\n<\/li>\n<li style=\" margin: 15px 0px;counter-increment: step-counter 1; padding-left: 40px; \">\n<section><span leaf=\"\">\u9009\u62e9&nbsp;<\/span><strong><span leaf=\"\">Maven<\/span><\/strong><span leaf=\"\">&nbsp;\u4f5c\u4e3a\u6784\u5efa\u5de5\u5177<\/span><\/section>\n<\/li>\n<li style=\" margin: 15px 0px;counter-increment: step-counter 1; padding-left: 40px; \">\n<section><span leaf=\"\">\u586b\u5199\u9879\u76ee\u4fe1\u606f\uff1aName\uff08\u9879\u76ee\u540d\uff09\u3001Location\uff08\u5b58\u50a8\u4f4d\u7f6e\uff09\u3001JDK<\/span><\/section>\n<\/li>\n<li style=\" margin: 15px 0px;counter-increment: step-counter 1; padding-left: 40px; \">\n<section><span leaf=\"\">\u70b9\u51fb&nbsp;<\/span><strong><span leaf=\"\">Create<\/span><\/strong><span leaf=\"\">&nbsp;\u521b\u5efa\u9879\u76ee<\/span><\/section>\n<\/li>\n<\/ol>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">5.2 \u9879\u76ee\u76ee\u5f55\u7ed3\u6784<\/span><\/h3>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u521b\u5efa\u5b8c\u6210\u540e\uff0c\u4f60\u7684\u9879\u76ee\u7ed3\u6784\u5e94\u8be5\u662f\u8fd9\u6837\u7684\uff1a<\/span><\/p>\n<section style=\"text-align: center;\" nodeleaf=\"\">\n<figure class=\"wx-qr-wrap\"><img decoding=\"async\" class=\"rich_pages wxw-img\" data-aistatus=\"1\" data-imgfileid=\"100000459\" data-s=\"300,640\" data-type=\"png\" type=\"block\" src=\"https:\/\/mmbiz.qpic.cn\/sz_mmbiz_png\/BWmfcibGhS1JYLicGK4n8HnehuwnEiaqlrSVlLeYVr6u20Kq7s87YibYJ59eoxkOqBTu2ka5ytaUVTdQibHwicUHc4WAJCWeiapm6umjs4Aygr4RwU\/640?wx_fmt=png&#038;from=appmsg\" \/><figcaption class=\"wx-qr-tip\"><img decoding=\"async\" src=\"https:\/\/www.deartester.com\/wp-content\/uploads\/2026\/09\/wechat-qr.jpg\" alt=\"\u5fae\u4fe1\u516c\u4f17\u53f7\u4e8c\u7ef4\u7801\" loading=\"lazy\"><span>\u56fe\u7247\u5f15\u81ea\u5fae\u4fe1\u516c\u4f17\u53f7\uff0c\u626b\u7801\u5173\u6ce8\u9605\u8bfb\u539f\u6587<\/span><\/figcaption><\/figure>\n<\/section>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u5404\u76ee\u5f55\u7528\u9014\u8bf4\u660e\uff1a<\/span><\/p>\n<table style=\"width: 677px;border-collapse: collapse;margin: 20px 0px;font-size: 14px;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\">\n<tbody>\n<tr>\n<th style=\"background-color: rgb(7, 193, 96);color: rgb(255, 255, 255);padding: 12px 10px;text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\"><span leaf=\"\"><span textstyle=\"\" style=\"font-size: 16px;color: #7b0c00;\">\u76ee\u5f55<\/span><\/span><\/section>\n<\/th>\n<th style=\"background-color: rgb(7, 193, 96);color: rgb(255, 255, 255);padding: 12px 10px;text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\"><span leaf=\"\"><span textstyle=\"\" style=\"font-size: 16px;color: #7b0c00;\">\u7528\u9014<\/span><\/span><\/section>\n<\/th>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\"><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">src\/test\/java\/stepdefinitions<\/span><\/code><\/td>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">\u5b58\u653eStep Definitions\u4ee3\u7801<\/span><\/section>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\"><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">src\/test\/java\/runners<\/span><\/code><\/td>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">\u5b58\u653e\u6d4b\u8bd5\u8fd0\u884c\u5668<\/span><\/section>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\"><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">src\/test\/resources\/features<\/span><\/code><\/td>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">\u5b58\u653e.feature\u6587\u4ef6<\/span><\/section>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\"><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">pom.xml<\/span><\/code><\/td>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">Maven\u4f9d\u8d56\u914d\u7f6e\u6587\u4ef6<\/span><\/section>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">5.3 \u914d\u7f6e\u6587\u4ef6\uff1apom.xml\u8be6\u89e3<\/span><\/h3>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">pom.xml\u662fMaven\u9879\u76ee\u7684\u6838\u5fc3\u914d\u7f6e\u6587\u4ef6\uff0c\u5b9a\u4e49\u4e86\u9879\u76ee\u4f9d\u8d56\u3002\u4ee5\u4e0b\u662fCucumber+Selenium\u9879\u76ee\u7684\u5b8c\u6574\u914d\u7f6e\uff1a<\/span><\/p>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"xml\"><code><span leaf=\"\"><span class=\"code-snippet__meta\">&lt;?xml version=<\/span><span class=\"code-snippet__meta\"><span class=\"code-snippet__string\">\"1.0\"<\/span><\/span><span class=\"code-snippet__meta\">&nbsp;encoding=<\/span><span class=\"code-snippet__meta\"><span class=\"code-snippet__string\">\"UTF-8\"<\/span><\/span><span class=\"code-snippet__meta\">?&gt;<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">project<\/span><\/span><span class=\"code-snippet__tag\">&nbsp;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__attr\">xmlns<\/span><\/span><span class=\"code-snippet__tag\">=<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__string\">\"http:\/\/maven.apache.org\/POM\/4.0.0\"<\/span><\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"code-snippet__attr\">xmlns:xsi<\/span>=<span class=\"code-snippet__string\">\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"code-snippet__attr\">xsi:schemaLocation<\/span>=<span class=\"code-snippet__string\">\"http:\/\/maven.apache.org\/POM\/4.0.0&nbsp;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;http:\/\/maven.apache.org\/xsd\/maven-4.0.0.xsd\"&gt;<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">modelVersion<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span>4.0.0<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">modelVersion<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">groupId<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span>com.deartester<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">groupId<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">artifactId<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span>cucumber-demo<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">artifactId<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">version<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span>1.0-SNAPSHOT<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">version<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">packaging<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span>jar<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">packaging<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">properties<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">maven.compiler.source<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span>17<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">maven.compiler.source<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">maven.compiler.target<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span>17<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">maven.compiler.target<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">project.build.sourceEncoding<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span>UTF-8<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">project.build.sourceEncoding<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">cucumber.version<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span>7.14.0<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">cucumber.version<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">selenium.version<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span>4.12.0<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">selenium.version<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">properties<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">dependencies<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\">&lt;!-- Cucumber Core --&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">dependency<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">groupId<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span>io.cucumber<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">groupId<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">artifactId<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span>cucumber-java<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">artifactId<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">version<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span>${cucumber.version}<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">version<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">dependency<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\">&lt;!-- Cucumber JUnit --&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">dependency<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">groupId<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span>io.cucumber<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">groupId<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">artifactId<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span>cucumber-junit<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">artifactId<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">version<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span>${cucumber.version}<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">version<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">scope<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span>test<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">scope<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">dependency<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\">&lt;!-- Selenium WebDriver --&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">dependency<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">groupId<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span>org.seleniumhq.selenium<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">groupId<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">artifactId<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span>selenium-java<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">artifactId<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">version<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span>${selenium.version}<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">version<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">dependency<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\">&lt;!-- JUnit --&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">dependency<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">groupId<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span>io.cucumber<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">groupId<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">artifactId<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span>cucumber-junit<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">artifactId<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">version<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span>${cucumber.version}<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">version<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">dependency<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">dependencies<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">build<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">plugins<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">plugin<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">groupId<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span>org.apache.maven.plugins<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">groupId<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">artifactId<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span>maven-surefire-plugin<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">artifactId<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">version<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span>3.0.0-M9<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">version<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">plugin<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">plugins<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">build<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">project<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><\/pre>\n<\/section>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u4f9d\u8d56\u8bf4\u660e\uff1a<\/span><\/p>\n<ul style=\"margin: 15px 0px;padding-left: 2em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" class=\"list-paddingleft-1\">\n<li style=\"margin: 8px 0px;\"><strong><span leaf=\"\">cucumber-java<\/span><\/strong><br \/>\n<section><span leaf=\"\">\uff1aCucumber\u7684\u6838\u5fc3\u5e93\uff0c\u63d0\u4f9bGherkin\u89e3\u6790\u548cStep\u5339\u914d\u529f\u80fd<\/span><\/section>\n<\/li>\n<li style=\"margin: 8px 0px;\"><strong><span leaf=\"\">cucumber-junit<\/span><\/strong><br \/>\n<section><span leaf=\"\">\uff1aCucumber\u4e0eJUnit\u7684\u96c6\u6210\uff0c\u5141\u8bb8\u7528JUnit Runner\u8fd0\u884cCucumber\u6d4b\u8bd5<\/span><\/section>\n<\/li>\n<li style=\"margin: 8px 0px;\"><strong><span leaf=\"\">selenium-java<\/span><\/strong><br \/>\n<section><span leaf=\"\">\uff1aSelenium WebDriver\u7684Java\u5ba2\u6237\u7aef\uff0c\u7528\u4e8e\u6d4f\u89c8\u5668\u81ea\u52a8\u5316<\/span><\/section>\n<\/li>\n<li style=\"margin: 8px 0px;\"><strong><span leaf=\"\">junit<\/span><\/strong><br \/>\n<section><span leaf=\"\">\uff1aJUnit\u6d4b\u8bd5\u6846\u67b6\uff0cCucumber\u4f9d\u8d56\u5b83\u6765\u8fd0\u884c\u6d4b\u8bd5<\/span><\/section>\n<\/li>\n<\/ul>\n<hr style=\"border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);\"  \/>\n<h2 style=\"font-size: 22px;font-weight: 600;color: rgb(26, 26, 26);margin: 35px 0px 18px;padding-left: 15px;border-left: 5px solid rgb(7, 193, 96);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u516d\u3001\u7b2c\u4e00\u4e2a\u6d4b\u8bd5\u573a\u666f\uff1a\u5b8c\u6574\u7684\u767b\u5f55\u529f\u80fd\u6d4b\u8bd5<\/span><\/h2>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u73b0\u5728\u6211\u4eec\u5f00\u59cb\u7f16\u5199\u7b2c\u4e00\u4e2a\u5b8c\u6574\u7684Cucumber\u6d4b\u8bd5\u7528\u4f8b\u2014\u2014\u767b\u5f55\u529f\u80fd\u6d4b\u8bd5\u3002<\/span><\/p>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">6.1 \u7f16\u5199Feature\u6587\u4ef6<\/span><\/h3>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u5728<\/span><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">src\/test\/resources\/features<\/span><\/code><span leaf=\"\">\u76ee\u5f55\u4e0b\u521b\u5efa<\/span><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">login.feature<\/span><\/code><span leaf=\"\">\u6587\u4ef6\uff1a<\/span><\/p>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"perl\"><code><span leaf=\"\"><span class=\"code-snippet__variable\">@login<\/span>&nbsp;<span class=\"code-snippet__variable\">@smoke<\/span><\/span><\/code><code><span leaf=\"\">\u529f\u80fd: \u7528\u6237\u767b\u5f55\u7cfb\u7edf<\/span><\/code><code><span leaf=\"\">&nbsp; \u4f5c\u4e3a\u7f51\u7ad9\u7684\u6ce8\u518c\u7528\u6237<\/span><\/code><code><span leaf=\"\">&nbsp; \u6211\u5e0c\u671b\u80fd\u591f\u4f7f\u7528\u7528\u6237\u540d\u548c\u5bc6\u7801\u767b\u5f55<\/span><\/code><code><span leaf=\"\">&nbsp; \u4ee5\u4fbf\u8bbf\u95ee\u6211\u7684\u4e2a\u4eba\u8d26\u6237<\/span><\/code><code><span leaf=\"\">&nbsp; \u80cc\u666f:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; \u5047\u8bbe \u7528\u6237\u672a\u767b\u5f55<\/span><\/code><code><span leaf=\"\">&nbsp;&nbsp;<span class=\"code-snippet__variable\">@success<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; \u573a\u666f\u5927\u7eb2: \u4f7f\u7528\u6b63\u786e\u7684\u8d26\u53f7\u5bc6\u7801\u767b\u5f55<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; \u5f53 \u8f93\u5165\u7528\u6237\u540d&nbsp;<span class=\"code-snippet__string\">\"{username}\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; \u5e76\u4e14 \u8f93\u5165\u5bc6\u7801&nbsp;<span class=\"code-snippet__string\">\"{password}\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; \u5e76\u4e14 \u70b9\u51fb\u767b\u5f55\u6309\u94ae<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; \u90a3\u4e48 \u5e94\u8be5\u663e\u793a\u6b22\u8fce\u4fe1\u606f&nbsp;<span class=\"code-snippet__string\">\"\u6b22\u8fce\u56de\u6765\uff0c{username}\"<\/span><\/span><\/code><code><span leaf=\"\"><br  \/><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; \u4f8b\u5b50:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; | username | password &nbsp;|<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; | testuser | Test123456 |<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; | admin &nbsp; &nbsp;| Admin<span class=\"code-snippet__variable\">@2024<\/span>&nbsp;|<\/span><\/code><code><span leaf=\"\">&nbsp;&nbsp;<span class=\"code-snippet__variable\">@failure<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; \u573a\u666f: \u4f7f\u7528\u9519\u8bef\u5bc6\u7801\u767b\u5f55\u5931\u8d25<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; \u5f53 \u8f93\u5165\u7528\u6237\u540d&nbsp;<span class=\"code-snippet__string\">\"testuser\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; \u5e76\u4e14 \u8f93\u5165\u9519\u8bef\u5bc6\u7801&nbsp;<span class=\"code-snippet__string\">\"wrongpass\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; \u5e76\u4e14 \u70b9\u51fb\u767b\u5f55\u6309\u94ae<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; \u90a3\u4e48 \u5e94\u8be5\u663e\u793a\u9519\u8bef\u63d0\u793a&nbsp;<span class=\"code-snippet__string\">\"\u7528\u6237\u540d\u6216\u5bc6\u7801\u9519\u8bef\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; \u5e76\u4e14 \u4fdd\u6301\u767b\u5f55\u9875\u9762<\/span><\/code><code><span leaf=\"\">&nbsp;&nbsp;<span class=\"code-snippet__variable\">@empty<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; \u573a\u666f: \u7528\u6237\u540d\u4e3a\u7a7a\u65f6\u767b\u5f55\u5931\u8d25<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; \u5f53 \u8f93\u5165\u7528\u6237\u540d\u4e3a\u7a7a<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; \u5e76\u4e14 \u8f93\u5165\u5bc6\u7801&nbsp;<span class=\"code-snippet__string\">\"Test123456\"<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; \u5e76\u4e14 \u70b9\u51fb\u767b\u5f55\u6309\u94ae<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; \u90a3\u4e48 \u5e94\u8be5\u663e\u793a\u9519\u8bef\u63d0\u793a&nbsp;<span class=\"code-snippet__string\">\"\u8bf7\u8f93\u5165\u7528\u6237\u540d\"<\/span><\/span><\/code><\/pre>\n<\/section>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">6.2 Gherkin\u8bed\u6cd5\u8be6\u89e3<\/span><\/h3>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u8ba9\u6211\u89e3\u91ca\u4e00\u4e0b\u4e0a\u9762\u7528\u5230\u7684Gherkin\u5173\u952e\u5b57\uff1a<\/span><\/p>\n<table style=\"width: 677px;border-collapse: collapse;margin: 20px 0px;font-size: 14px;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\">\n<tbody>\n<tr>\n<th style=\"background-color: rgb(7, 193, 96);color: rgb(255, 255, 255);padding: 12px 10px;text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\"><span leaf=\"\"><span textstyle=\"\" style=\"font-size: 16px;color: #7b0c00;\">\u5173\u952e\u5b57<\/span><\/span><\/section>\n<\/th>\n<th style=\"background-color: rgb(7, 193, 96);color: rgb(255, 255, 255);padding: 12px 10px;text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\"><span leaf=\"\"><span textstyle=\"\" style=\"font-size: 16px;color: #7b0c00;\">\u4e2d\u6587\u542b\u4e49<\/span><\/span><\/section>\n<\/th>\n<th style=\"background-color: rgb(7, 193, 96);color: rgb(255, 255, 255);padding: 12px 10px;text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\"><span leaf=\"\"><span textstyle=\"\" style=\"font-size: 16px;color: #7b0c00;\">\u7528\u9014<\/span><\/span><\/section>\n<\/th>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\"><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">\u529f\u80fd<\/span><\/code><\/td>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">Feature<\/span><\/section>\n<\/td>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">\u63cf\u8ff0\u4e00\u4e2a\u529f\u80fd\u6a21\u5757<\/span><\/section>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\"><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">\u573a\u666f<\/span><\/code><\/td>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">Scenario<\/span><\/section>\n<\/td>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">\u4e00\u4e2a\u5177\u4f53\u7684\u6d4b\u8bd5\u573a\u666f<\/span><\/section>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\"><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">\u573a\u666f\u5927\u7eb2<\/span><\/code><\/td>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">Scenario Outline<\/span><\/section>\n<\/td>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">\u4f7f\u7528\u6570\u636e\u9a71\u52a8\u8fd0\u884c\u591a\u4e2a\u76f8\u4f3c\u573a\u666f<\/span><\/section>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\"><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">\u4f8b\u5b50<\/span><\/code><\/td>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">Examples<\/span><\/section>\n<\/td>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">\u4e3a\u573a\u666f\u5927\u7eb2\u63d0\u4f9b\u6d4b\u8bd5\u6570\u636e<\/span><\/section>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\"><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">\u5047\u8bbe<\/span><\/code><\/td>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">Given<\/span><\/section>\n<\/td>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">\u524d\u7f6e\u6761\u4ef6<\/span><\/section>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\"><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">\u5f53<\/span><\/code><\/td>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">When<\/span><\/section>\n<\/td>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">\u7528\u6237\u52a8\u4f5c<\/span><\/section>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\"><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">\u90a3\u4e48<\/span><\/code><\/td>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">Then<\/span><\/section>\n<\/td>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">\u9884\u671f\u7ed3\u679c<\/span><\/section>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\"><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">\u5e76\u4e14<\/span><\/code><\/td>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">And<\/span><\/section>\n<\/td>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">\u9644\u52a0\u6b65\u9aa4<\/span><\/section>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\"><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">\u4f46\u662f<\/span><\/code><\/td>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">But<\/span><\/section>\n<\/td>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">\u76f8\u53cd\u7684\u6b65\u9aa4<\/span><\/section>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\"><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">\u80cc\u666f<\/span><\/code><\/td>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">Background<\/span><\/section>\n<\/td>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">\u6240\u6709\u573a\u666f\u7684\u524d\u7f6e\u6761\u4ef6<\/span><\/section>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span leaf=\"\">\ud83d\udca1&nbsp;<span textstyle=\"\" style=\"color: #d6a841;font-weight: bold;\">\u547d\u540d\u5efa\u8bae<\/span><\/span><\/p>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;\"><span leaf=\"\">Gherkin\u5173\u952e\u5b57\u540e\u9762\u7d27\u8ddf\u7684\u5185\u5bb9\u5c31\u662f\u6b65\u9aa4\u63cf\u8ff0\u3002\u5efa\u8bae\u4f7f\u7528<\/span><strong><span leaf=\"\">\u4e2d\u6587<\/span><\/strong><span leaf=\"\">\u63cf\u8ff0\uff0c\u8fd9\u6837\u56e2\u961f\u6210\u5458\u66f4\u5bb9\u6613\u7406\u89e3\u3002\u5173\u952e\u5b57\uff08\u529f\u80fd\u3001\u573a\u666f\u7b49\uff09\u4e5f\u8981\u7528\u4e2d\u6587\u3002<\/span><\/p>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">6.3 \u7f16\u5199Step Definitions<\/span><\/h3>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">Step Definitions\u662f\u5c06Gherkin\u6b65\u9aa4\u4e0e\u5b9e\u9645\u4ee3\u7801\u8fde\u63a5\u8d77\u6765\u7684&#8221;\u6865\u6881&#8221;\u3002\u5728<\/span><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">stepdefinitions<\/span><\/code><span leaf=\"\">\u76ee\u5f55\u4e0b\u521b\u5efa<\/span><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">LoginSteps.java<\/span><\/code><span leaf=\"\">\uff1a<\/span><\/p>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"java\"><code><span leaf=\"\"><span class=\"code-snippet__keyword\">package<\/span>&nbsp;stepdefinitions;<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;io.cucumber.java.zh_cn.*;<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;org.junit.Assert;<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;org.openqa.selenium.By;<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;org.openqa.selenium.WebDriver;<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;org.openqa.selenium.chrome.ChromeDriver;<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;org.openqa.selenium.support.ui.ExpectedConditions;<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;org.openqa.selenium.support.ui.WebDriverWait;<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;java.time.Duration;<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">public<\/span>&nbsp;<span class=\"code-snippet__keyword\">class<\/span>&nbsp;<span class=\"code-snippet__title\">LoginSteps<\/span>&nbsp;{<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">private<\/span>&nbsp;WebDriver driver;<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">private<\/span>&nbsp;WebDriverWait wait;<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\">\/\/ \u5171\u4eab\u72b6\u6001\uff1a\u901a\u8fc7Context\u7c7b\u4f20\u9012\u6d4b\u8bd5\u6570\u636e<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">private<\/span>&nbsp;TestContext context;<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">public<\/span>&nbsp;<span class=\"code-snippet__title\">LoginSteps<\/span><span class=\"code-snippet__params\">(TestContext context)<\/span>&nbsp;{<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__built_in\">this<\/span>.context = context;<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__built_in\">this<\/span>.driver = context.driver;<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__built_in\">this<\/span>.wait =&nbsp;<span class=\"code-snippet__keyword\">new<\/span>&nbsp;<span class=\"code-snippet__title\">WebDriverWait<\/span>(driver, Duration.ofSeconds(<span class=\"code-snippet__number\">10<\/span>));<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; @\u5047\u8bbe(<span class=\"code-snippet__string\">\"\u7528\u6237\u672a\u767b\u5f55\"<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">public<\/span>&nbsp;<span class=\"code-snippet__keyword\">void<\/span>&nbsp;\u7528\u6237\u672a\u767b\u5f55() {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\">\/\/ \u6253\u5f00\u767b\u5f55\u9875\u9762<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; driver.get(<span class=\"code-snippet__string\">\"https:\/\/demo.test.com\/login\"<\/span>);<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; @\u5f53(<span class=\"code-snippet__string\">\"\u8f93\u5165\u7528\u6237\u540d {string}\"<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">public<\/span>&nbsp;<span class=\"code-snippet__keyword\">void<\/span>&nbsp;\u8f93\u5165\u7528\u6237\u540d(String username) {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__type\">WebElement<\/span>&nbsp;<span class=\"code-snippet__variable\">usernameInput<\/span>&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;wait.until(<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ExpectedConditions.presenceOfElementLocated(By.id(<span class=\"code-snippet__string\">\"username\"<\/span>))<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; );<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; usernameInput.clear();<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; usernameInput.sendKeys(username);<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; @\u5f53(<span class=\"code-snippet__string\">\"\u8f93\u5165\u7528\u6237\u540d\u4e3a\u7a7a\"<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">public<\/span>&nbsp;<span class=\"code-snippet__keyword\">void<\/span>&nbsp;\u8f93\u5165\u7528\u6237\u540d\u4e3a\u7a7a() {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__type\">WebElement<\/span>&nbsp;<span class=\"code-snippet__variable\">usernameInput<\/span>&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;wait.until(<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ExpectedConditions.presenceOfElementLocated(By.id(<span class=\"code-snippet__string\">\"username\"<\/span>))<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; );<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; usernameInput.clear();<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; @\u5f53(<span class=\"code-snippet__string\">\"\u8f93\u5165\u5bc6\u7801 {string}\"<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">public<\/span>&nbsp;<span class=\"code-snippet__keyword\">void<\/span>&nbsp;\u8f93\u5165\u5bc6\u7801(String password) {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__type\">WebElement<\/span>&nbsp;<span class=\"code-snippet__variable\">passwordInput<\/span>&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;driver.findElement(By.id(<span class=\"code-snippet__string\">\"password\"<\/span>));<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; passwordInput.clear();<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; passwordInput.sendKeys(password);<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; @\u5f53(<span class=\"code-snippet__string\">\"\u8f93\u5165\u9519\u8bef\u5bc6\u7801 {string}\"<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">public<\/span>&nbsp;<span class=\"code-snippet__keyword\">void<\/span>&nbsp;\u8f93\u5165\u9519\u8bef\u5bc6\u7801(String password) {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; \u8f93\u5165\u5bc6\u7801(password);<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; @\u5f53(<span class=\"code-snippet__string\">\"\u70b9\u51fb\u767b\u5f55\u6309\u94ae\"<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">public<\/span>&nbsp;<span class=\"code-snippet__keyword\">void<\/span>&nbsp;\u70b9\u51fb\u767b\u5f55\u6309\u94ae() {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__type\">WebElement<\/span>&nbsp;<span class=\"code-snippet__variable\">loginBtn<\/span>&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;driver.findElement(By.id(<span class=\"code-snippet__string\">\"login-btn\"<\/span>));<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; loginBtn.click();<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; @\u90a3\u4e48(<span class=\"code-snippet__string\">\"\u5e94\u8be5\u663e\u793a\u6b22\u8fce\u4fe1\u606f {string}\"<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">public<\/span>&nbsp;<span class=\"code-snippet__keyword\">void<\/span>&nbsp;\u5e94\u8be5\u663e\u793a\u6b22\u8fce\u4fe1\u606f(String expectedMessage) {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__type\">WebElement<\/span>&nbsp;<span class=\"code-snippet__variable\">welcomeMsg<\/span>&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;wait.until(<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ExpectedConditions.presenceOfElementLocated(By.cssSelector(<span class=\"code-snippet__string\">\".welcome-message\"<\/span>))<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; );<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__type\">String<\/span>&nbsp;<span class=\"code-snippet__variable\">actualMessage<\/span>&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;welcomeMsg.getText();<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; Assert.assertEquals(<span class=\"code-snippet__string\">\"\u6b22\u8fce\u4fe1\u606f\u4e0d\u5339\u914d\"<\/span>, expectedMessage, actualMessage);<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; @\u90a3\u4e48(<span class=\"code-snippet__string\">\"\u5e94\u8be5\u663e\u793a\u9519\u8bef\u63d0\u793a {string}\"<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">public<\/span>&nbsp;<span class=\"code-snippet__keyword\">void<\/span>&nbsp;\u5e94\u8be5\u663e\u793a\u9519\u8bef\u63d0\u793a(String expectedError) {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__type\">WebElement<\/span>&nbsp;<span class=\"code-snippet__variable\">errorMsg<\/span>&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;wait.until(<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ExpectedConditions.presenceOfElementLocated(By.cssSelector(<span class=\"code-snippet__string\">\".error-message\"<\/span>))<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; );<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__type\">String<\/span>&nbsp;<span class=\"code-snippet__variable\">actualError<\/span>&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;errorMsg.getText();<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; Assert.assertEquals(<span class=\"code-snippet__string\">\"\u9519\u8bef\u63d0\u793a\u4e0d\u5339\u914d\"<\/span>, expectedError, actualError);<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; @\u90a3\u4e48(<span class=\"code-snippet__string\">\"\u4fdd\u6301\u767b\u5f55\u9875\u9762\"<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">public<\/span>&nbsp;<span class=\"code-snippet__keyword\">void<\/span>&nbsp;\u4fdd\u6301\u767b\u5f55\u9875\u9762() {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__type\">String<\/span>&nbsp;<span class=\"code-snippet__variable\">currentUrl<\/span>&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;driver.getCurrentUrl();<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; Assert.assertTrue(<span class=\"code-snippet__string\">\"\u5e94\u8be5\u4ecd\u5728\u767b\u5f55\u9875\u9762\"<\/span>, currentUrl.contains(<span class=\"code-snippet__string\">\"\/login\"<\/span>));<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">}<\/span><\/code><\/pre>\n<\/section>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">6.4 \u7f16\u5199Test Runner<\/span><\/h3>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">Test Runner\u7528\u4e8e\u542f\u52a8Cucumber\u6d4b\u8bd5\u3002\u5728<\/span><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">runners<\/span><\/code><span leaf=\"\">\u76ee\u5f55\u4e0b\u521b\u5efa<\/span><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">TestRunner.java<\/span><\/code><span leaf=\"\">\uff1a<\/span><\/p>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"swift\"><code><span leaf=\"\"><span class=\"code-snippet__keyword\">package<\/span>&nbsp;runners;<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;io.cucumber.junit.Cucumber;<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;io.cucumber.junit.CucumberOptions;<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;org.junit.runner.RunWith;<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__meta\">@RunWith<\/span>(<span class=\"code-snippet__type\">Cucumber<\/span>.class)<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__meta\">@CucumberOptions<\/span>(<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; features&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;<span class=\"code-snippet__string\">\"src\/test\/resources\/features\"<\/span>, &nbsp;<span class=\"code-snippet__comment\">\/\/ Feature\u6587\u4ef6\u8def\u5f84<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; glue&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;{<span class=\"code-snippet__string\">\"stepdefinitions\"<\/span>,&nbsp;<span class=\"code-snippet__string\">\"hooks\"<\/span>}, &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\">\/\/ Step Definitions\u5305\u8def\u5f84<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; plugin&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;{<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"pretty\"<\/span>, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"code-snippet__comment\">\/\/ \u5f69\u8272\u8f93\u51fa<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"html:target\/cucumber-reports.html\"<\/span>, &nbsp;&nbsp;<span class=\"code-snippet__comment\">\/\/ HTML\u62a5\u544a<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"json:target\/cucumber-reports.json\"<\/span>, &nbsp;&nbsp;<span class=\"code-snippet__comment\">\/\/ JSON\u62a5\u544a<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__string\">\"junit:target\/cucumber-reports.xml\"<\/span>&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\">\/\/ JUnit XML\u62a5\u544a<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; },<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; tags&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;<span class=\"code-snippet__string\">\"@smoke\"<\/span>, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"code-snippet__comment\">\/\/ \u53ea\u8fd0\u884c\u5e26@smoke\u6807\u7b7e\u7684\u6d4b\u8bd5<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; monochrome&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;<span class=\"code-snippet__literal\">false<\/span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"code-snippet__comment\">\/\/ \u5f69\u8272\u63a7\u5236\u53f0\u8f93\u51fa<\/span><\/span><\/code><code><span leaf=\"\">)<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">public<\/span>&nbsp;<span class=\"code-snippet__keyword\">class<\/span>&nbsp;<span class=\"code-snippet__title\">TestRunner<\/span>&nbsp;{<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\">\/\/ \u6d4b\u8bd5\u8fd0\u884c\u5668\u914d\u7f6e\u7c7b\uff0c\u4e0d\u9700\u8981\u5199\u4efb\u4f55\u4ee3\u7801<\/span><\/span><\/code><code><span leaf=\"\">}<\/span><\/code><\/pre>\n<\/section>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">6.5 \u7f16\u5199Hooks\uff08\u94a9\u5b50\u51fd\u6570\uff09<\/span><\/h3>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">Hooks\u7528\u4e8e\u5728\u6d4b\u8bd5\u573a\u666f\u6267\u884c\u524d\u540e\u6267\u884c\u4e00\u4e9b\u516c\u5171\u64cd\u4f5c\uff0c\u6bd4\u5982\u6253\u5f00\/\u5173\u95ed\u6d4f\u89c8\u5668\u3002\u521b\u5efa<\/span><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">hooks\/Hooks.java<\/span><\/code><span leaf=\"\">\uff1a<\/span><\/p>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"java\"><code><span leaf=\"\"><span class=\"code-snippet__keyword\">package<\/span>&nbsp;hooks;<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;io.cucumber.java.After;<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;io.cucumber.java.Before;<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;io.cucumber.java.Scenario;<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;org.openqa.selenium.OutputType;<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;org.openqa.selenium.TakesScreenshot;<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;org.openqa.selenium.WebDriver;<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;org.openqa.selenium.chrome.ChromeDriver;<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;org.openqa.selenium.chrome.ChromeOptions;<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">import<\/span>&nbsp;java.time.Duration;<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">public<\/span>&nbsp;<span class=\"code-snippet__keyword\">class<\/span>&nbsp;<span class=\"code-snippet__title\">Hooks<\/span>&nbsp;{<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">public<\/span>&nbsp;<span class=\"code-snippet__keyword\">static<\/span>&nbsp;WebDriver driver;<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__meta\">@Before<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">public<\/span>&nbsp;<span class=\"code-snippet__keyword\">void<\/span>&nbsp;<span class=\"code-snippet__title\">setUp<\/span><span class=\"code-snippet__params\">()<\/span>&nbsp;{<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\">\/\/ \u914d\u7f6eChrome\u9009\u9879<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__type\">ChromeOptions<\/span>&nbsp;<span class=\"code-snippet__variable\">options<\/span>&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;<span class=\"code-snippet__keyword\">new<\/span>&nbsp;<span class=\"code-snippet__title\">ChromeOptions<\/span>();<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; options.addArguments(<span class=\"code-snippet__string\">\"--start-maximized\"<\/span>);<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; options.addArguments(<span class=\"code-snippet__string\">\"--disable-notifications\"<\/span>);<\/span><\/code><code><span leaf=\"\"><br  \/><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\">\/\/ \u521d\u59cb\u5316WebDriver<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; driver =&nbsp;<span class=\"code-snippet__keyword\">new<\/span>&nbsp;<span class=\"code-snippet__title\">ChromeDriver<\/span>(options);<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(<span class=\"code-snippet__number\">10<\/span>));<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; driver.manage().window().maximize();<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__meta\">@After<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">public<\/span>&nbsp;<span class=\"code-snippet__keyword\">void<\/span>&nbsp;<span class=\"code-snippet__title\">tearDown<\/span><span class=\"code-snippet__params\">(Scenario scenario)<\/span>&nbsp;{<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\">\/\/ \u5982\u679c\u6d4b\u8bd5\u5931\u8d25\uff0c\u622a\u53d6\u5c4f\u5e55\u622a\u56fe<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">if<\/span>&nbsp;(scenario.isFailed()) {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__type\">TakesScreenshot<\/span>&nbsp;<span class=\"code-snippet__variable\">screenshot<\/span>&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;(TakesScreenshot) driver;<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__type\">byte<\/span>[] screenshotBytes = screenshot.getScreenshotAs(OutputType.BYTES);<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; scenario.attach(screenshotBytes,&nbsp;<span class=\"code-snippet__string\">\"image\/png\"<\/span>,&nbsp;<span class=\"code-snippet__string\">\"\u5931\u8d25\u622a\u56fe\"<\/span>);<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\"><br  \/><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\">\/\/ \u5173\u95ed\u6d4f\u89c8\u5668<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">if<\/span>&nbsp;(driver !=&nbsp;<span class=\"code-snippet__literal\">null<\/span>) {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; driver.quit();<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">}<\/span><\/code><\/pre>\n<\/section>\n<pre style=\"background-color: rgb(26, 26, 26);color: rgb(230, 230, 230);padding: 18px;border-radius: 8px;font-size: 14px;line-height: 1.6;overflow-x: auto;margin: 20px 0px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">mvn test &nbsp; &nbsp;<\/span><span leaf=\"\" data-pm-slice=\"1 1 [&quot;para&quot;,{&quot;tagName&quot;:&quot;pre&quot;,&quot;attributes&quot;:{&quot;style&quot;:&quot;background-color: rgb(26, 26, 26); color: rgb(230, 230, 230); padding: 18px; border-radius: 8px; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 20px 0px; font-family: \\&quot;SF Mono\\&quot;, Monaco, Inconsolata, \\&quot;Roboto Mono\\&quot;, monospace; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;,&quot;data-pm-slice&quot;:&quot;0 0 []&quot;},&quot;namespaceURI&quot;:&quot;http:\/\/www.w3.org\/1999\/xhtml&quot;}]\"># \u8fd0\u884c\u6240\u6709\u6d4b\u8bd5<\/span><\/pre>\n<pre style=\"background-color: rgb(26, 26, 26);color: rgb(230, 230, 230);padding: 18px;border-radius: 8px;font-size: 14px;line-height: 1.6;overflow-x: auto;margin: 20px 0px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\" data-pm-slice=\"1 1 [&quot;para&quot;,{&quot;tagName&quot;:&quot;pre&quot;,&quot;attributes&quot;:{&quot;style&quot;:&quot;background-color: rgb(26, 26, 26); color: rgb(230, 230, 230); padding: 18px; border-radius: 8px; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 20px 0px; font-family: \\&quot;SF Mono\\&quot;, Monaco, Inconsolata, \\&quot;Roboto Mono\\&quot;, monospace; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;,&quot;data-pm-slice&quot;:&quot;0 0 []&quot;},&quot;namespaceURI&quot;:&quot;http:\/\/www.w3.org\/1999\/xhtml&quot;}]\">mvn test -Dcucumber.filter.tags=\"@smoke\" &nbsp; &nbsp;<\/span><span leaf=\"\"># \u8fd0\u884c\u5e26\u7279\u5b9a\u6807\u7b7e\u7684\u6d4b\u8bd5<\/span><\/pre>\n<pre style=\"background-color: rgb(26, 26, 26);color: rgb(230, 230, 230);padding: 18px;border-radius: 8px;font-size: 14px;line-height: 1.6;overflow-x: auto;margin: 20px 0px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\" data-pm-slice=\"1 1 [&quot;para&quot;,{&quot;tagName&quot;:&quot;pre&quot;,&quot;attributes&quot;:{&quot;style&quot;:&quot;background-color: rgb(26, 26, 26); color: rgb(230, 230, 230); padding: 18px; border-radius: 8px; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 20px 0px; font-family: \\&quot;SF Mono\\&quot;, Monaco, Inconsolata, \\&quot;Roboto Mono\\&quot;, monospace; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;,&quot;data-pm-slice&quot;:&quot;0 0 []&quot;},&quot;namespaceURI&quot;:&quot;http:\/\/www.w3.org\/1999\/xhtml&quot;}]\">mvn test -Dcucumber.features=\"src\/test\/resources\/features\/login.feature\" &nbsp; &nbsp;&nbsp;<\/span><span leaf=\"\"># \u8fd0\u884c\u7279\u5b9a\u529f\u80fd\u6587\u4ef6<\/span><\/pre>\n<h4 style=\"font-size: 16px;font-weight: 600;color: rgb(85, 85, 85);margin: 20px 0px 10px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u67e5\u770b\u6d4b\u8bd5\u62a5\u544a<\/span><\/h4>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u6d4b\u8bd5\u5b8c\u6210\u540e\uff0c\u5728\u9879\u76ee\u6839\u76ee\u5f55\u4e0b\u4f1a\u751f\u6210\u6d4b\u8bd5\u62a5\u544a\uff1a<\/span><\/p>\n<ul style=\"margin: 15px 0px;padding-left: 2em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" class=\"list-paddingleft-1\">\n<li style=\"margin: 8px 0px;\"><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">target\/cucumber-reports.html<\/span><\/code><br \/>\n<section><span leaf=\"\">\uff1aHTML\u683c\u5f0f\u62a5\u544a\uff0c\u7528\u6d4f\u89c8\u5668\u6253\u5f00\u5373\u53ef\u67e5\u770b<\/span><\/section>\n<\/li>\n<li style=\"margin: 8px 0px;\"><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">target\/cucumber-reports.json<\/span><\/code><br \/>\n<section><span leaf=\"\">\uff1aJSON\u683c\u5f0f\uff0c\u53ef\u7528\u4e8eCI\/CD\u96c6\u6210<\/span><\/section>\n<\/li>\n<li style=\"margin: 8px 0px;\"><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">target\/cucumber-reports.xml<\/span><\/code><br \/>\n<section><span leaf=\"\">\uff1aJUnit XML\u683c\u5f0f\uff0cJenkins\u7b49CI\u5de5\u5177\u53ef\u8bc6\u522b<\/span><\/section>\n<\/li>\n<\/ul>\n<section style=\"text-align: center;\"><span style=\"color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 600;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;float: none;display: inline !important;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\ud83d\udcca Cucumber HTML\u62a5\u544a\u793a\u4f8b<\/span><\/span><\/section>\n<section style=\"text-align: center;\" nodeleaf=\"\">\n<figure class=\"wx-qr-wrap\"><img decoding=\"async\" class=\"rich_pages wxw-img\" data-aistatus=\"1\" data-imgfileid=\"100000461\" data-s=\"300,640\" data-type=\"png\" type=\"block\" src=\"https:\/\/mmbiz.qpic.cn\/mmbiz_png\/BWmfcibGhS1KQY18syboa7utnJuOmB5YY51dXfaXc1N4EZqPOU3MJn7ZQqqUxCtauFFAKzHh89jCoLsTDibpFgRGhp1pLzQuUByiamwwILycbI\/640?wx_fmt=png&#038;from=appmsg\" \/><figcaption class=\"wx-qr-tip\"><img decoding=\"async\" src=\"https:\/\/www.deartester.com\/wp-content\/uploads\/2026\/09\/wechat-qr.jpg\" alt=\"\u5fae\u4fe1\u516c\u4f17\u53f7\u4e8c\u7ef4\u7801\" loading=\"lazy\"><span>\u56fe\u7247\u5f15\u81ea\u5fae\u4fe1\u516c\u4f17\u53f7\uff0c\u626b\u7801\u5173\u6ce8\u9605\u8bfb\u539f\u6587<\/span><\/figcaption><\/figure>\n<\/section>\n<hr style=\"border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);\"  \/>\n<h2 style=\"font-size: 22px;font-weight: 600;color: rgb(26, 26, 26);margin: 35px 0px 18px;padding-left: 15px;border-left: 5px solid rgb(7, 193, 96);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u4e03\u3001\u8fdb\u9636\u6280\u80fd\u4e00\uff1a\u6570\u636e\u9a71\u52a8\u6d4b\u8bd5<\/span><\/h2>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u5728\u771f\u5b9e\u9879\u76ee\u4e2d\uff0c\u6211\u4eec\u7ecf\u5e38\u9700\u8981\u5bf9\u540c\u4e00\u529f\u80fd\u7528\u4e0d\u540c\u7684\u6570\u636e\u8fdb\u884c\u6d4b\u8bd5\u3002Cucumber\u63d0\u4f9b\u4e86<\/span><strong><span leaf=\"\">Scenario Outline<\/span><\/strong><span leaf=\"\">\uff08\u573a\u666f\u5927\u7eb2\uff09\u6765\u5b9e\u73b0\u6570\u636e\u9a71\u52a8\u3002<\/span><\/p>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">7.1 \u4f7f\u7528Scenario Outline<\/span><\/h3>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u5047\u8bbe\u6211\u4eec\u8981\u6d4b\u8bd5\u7528\u6237\u6ce8\u518c\u529f\u80fd\uff0c\u9700\u8981\u6d4b\u8bd5\u591a\u79cd\u6ce8\u518c\u573a\u666f\uff1a<\/span><\/p>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"sql\"><code><span leaf=\"\"><span class=\"code-snippet__variable\">@register<\/span><\/span><\/code><code><span leaf=\"\">\u529f\u80fd: \u7528\u6237\u6ce8\u518c<\/span><\/code><code><span leaf=\"\">&nbsp;&nbsp;<span class=\"code-snippet__variable\">@valid<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; \u573a\u666f\u5927\u7eb2: \u9a8c\u8bc1\u4e0d\u540c\u90ae\u7bb1\u683c\u5f0f<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; \u5f53 \u8f93\u5165\u90ae\u7bb1 \"{email}\"<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; \u5e76\u4e14 \u8f93\u5165\u7528\u6237\u540d \"testuser\"<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; \u5e76\u4e14 \u8f93\u5165\u5bc6\u7801 \"Test123456\"<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; \u5e76\u4e14 \u70b9\u51fb\u6ce8\u518c\u6309\u94ae<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; \u90a3\u4e48 \u6ce8\u518c\u72b6\u6001\u5e94\u4e3a \"{expected}\"<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; \u4f8b\u5b50:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__operator\">|<\/span>&nbsp;email &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"code-snippet__operator\">|<\/span>&nbsp;expected &nbsp; &nbsp;<span class=\"code-snippet__operator\">|<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__operator\">|<\/span>&nbsp;test<span class=\"code-snippet__variable\">@example<\/span>.com &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__operator\">|<\/span>&nbsp;\u6210\u529f &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"code-snippet__operator\">|<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__operator\">|<\/span>&nbsp;user.name<span class=\"code-snippet__variable\">@domain<\/span>.com &nbsp;&nbsp;<span class=\"code-snippet__operator\">|<\/span>&nbsp;\u6210\u529f &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"code-snippet__operator\">|<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__operator\">|<\/span>&nbsp;user_name<span class=\"code-snippet__variable\">@sub<\/span>.domain.cn<span class=\"code-snippet__operator\">|<\/span>&nbsp;\u6210\u529f &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"code-snippet__operator\">|<\/span><\/span><\/code><code><span leaf=\"\">&nbsp;&nbsp;<span class=\"code-snippet__variable\">@invalid<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; \u573a\u666f\u5927\u7eb2: \u9a8c\u8bc1\u65e0\u6548\u90ae\u7bb1\u683c\u5f0f<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; \u5f53 \u8f93\u5165\u90ae\u7bb1 \"{email}\"<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; \u90a3\u4e48 \u90ae\u7bb1\u9a8c\u8bc1\u63d0\u793a\u5e94\u4e3a \"{expected}\"<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; \u4f8b\u5b50:<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__operator\">|<\/span>&nbsp;email &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"code-snippet__operator\">|<\/span>&nbsp;expected &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__operator\">|<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__operator\">|<\/span>&nbsp;invalid &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"code-snippet__operator\">|<\/span>&nbsp;\u90ae\u7bb1\u683c\u5f0f\u4e0d\u6b63\u786e &nbsp;<span class=\"code-snippet__operator\">|<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__operator\">|<\/span>&nbsp;<span class=\"code-snippet__variable\">@nodomain<\/span>.com &nbsp;<span class=\"code-snippet__operator\">|<\/span>&nbsp;\u90ae\u7bb1\u683c\u5f0f\u4e0d\u6b63\u786e &nbsp;<span class=\"code-snippet__operator\">|<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__operator\">|<\/span>&nbsp;<span class=\"code-snippet__keyword\">user<\/span>@ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"code-snippet__operator\">|<\/span>&nbsp;\u90ae\u7bb1\u683c\u5f0f\u4e0d\u6b63\u786e &nbsp;<span class=\"code-snippet__operator\">|<\/span><\/span><\/code><\/pre>\n<\/section>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">7.2 \u4eceExcel\u8bfb\u53d6\u6d4b\u8bd5\u6570\u636e<\/span><\/h3>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u5bf9\u4e8e\u66f4\u590d\u6742\u7684\u6570\u636e\u573a\u666f\uff0c\u53ef\u4ee5\u4eceExcel\u6216CSV\u6587\u4ef6\u8bfb\u53d6\u6d4b\u8bd5\u6570\u636e\uff1a<\/span><\/p>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"typescript\"><code><span leaf=\"\"><span class=\"code-snippet__meta\">@DataTableType<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">public<\/span>&nbsp;<span class=\"code-snippet__title\">User<\/span>&nbsp;<span class=\"code-snippet__title\">registerUser<\/span>(<span class=\"code-snippet__params\"><span class=\"code-snippet__title\">Map<\/span><\/span><span class=\"code-snippet__params\">&lt;<\/span><span class=\"code-snippet__params\"><span class=\"code-snippet__title\">String<\/span><\/span><span class=\"code-snippet__params\">,&nbsp;<\/span><span class=\"code-snippet__params\"><span class=\"code-snippet__title\">String<\/span><\/span><span class=\"code-snippet__params\">&gt; row<\/span>) {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">return<\/span>&nbsp;<span class=\"code-snippet__keyword\">new<\/span>&nbsp;<span class=\"code-snippet__title\">User<\/span>(<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; row.<span class=\"code-snippet__title\">get<\/span>(<span class=\"code-snippet__string\">\"username\"<\/span>),<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; row.<span class=\"code-snippet__title\">get<\/span>(<span class=\"code-snippet__string\">\"email\"<\/span>),<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; row.<span class=\"code-snippet__title\">get<\/span>(<span class=\"code-snippet__string\">\"password\"<\/span>),<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; row.<span class=\"code-snippet__title\">get<\/span>(<span class=\"code-snippet__string\">\"role\"<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; );<\/span><\/code><code><span leaf=\"\">}<\/span><\/code><code><span leaf=\"\">@\u5f53(<span class=\"code-snippet__string\">\"\u4f7f\u7528\u4ee5\u4e0b\u7528\u6237\u6570\u636e\u6ce8\u518c\"<\/span>)<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">public<\/span>&nbsp;<span class=\"code-snippet__built_in\">void<\/span>&nbsp;\u4f7f\u7528\u4ee5\u4e0b\u7528\u6237\u6570\u636e\u6ce8\u518c(<span class=\"code-snippet__title\">List<\/span>&lt;<span class=\"code-snippet__title\">User<\/span>&gt; users) {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">for<\/span>&nbsp;(<span class=\"code-snippet__title\">User<\/span>&nbsp;user : users) {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__title\">inputUsername<\/span>(user.<span class=\"code-snippet__title\">getUsername<\/span>());<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__title\">inputEmail<\/span>(user.<span class=\"code-snippet__title\">getEmail<\/span>());<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__title\">inputPassword<\/span>(user.<span class=\"code-snippet__title\">getPassword<\/span>());<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__title\">clickRegisterButton<\/span>();<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__title\">verifyRegistration<\/span>(user.<span class=\"code-snippet__title\">getExpectedResult<\/span>());<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">}<\/span><\/code><\/pre>\n<\/section>\n<hr style=\"border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);\"  \/>\n<h2 style=\"font-size: 22px;font-weight: 600;color: rgb(26, 26, 26);margin: 35px 0px 18px;padding-left: 15px;border-left: 5px solid rgb(7, 193, 96);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u516b\u3001\u8fdb\u9636\u6280\u80fd\u4e8c\uff1aTags\u4e0e\u6d4b\u8bd5\u7ec4\u7ec7<\/span><\/h2>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">8.1 Tags\u7684\u4f7f\u7528<\/span><\/h3>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">Tags\uff08\u6807\u7b7e\uff09\u7528\u4e8e\u5bf9\u6d4b\u8bd5\u7528\u4f8b\u8fdb\u884c\u5206\u7c7b\uff0c\u65b9\u4fbf\u9009\u62e9\u6027\u8fd0\u884c\uff1a<\/span><\/p>\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"576\">\n<pre style=\"background-color: rgb(26, 26, 26);color: rgb(230, 230, 230);padding: 18px;border-radius: 8px;font-size: 14px;line-height: 1.6;overflow-x: auto;margin: 20px 0px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">@login @smoke @regression<\/span><\/pre>\n<pre style=\"background-color: rgb(26, 26, 26);color: rgb(230, 230, 230);padding: 18px;border-radius: 8px;font-size: 14px;line-height: 1.6;overflow-x: auto;margin: 20px 0px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u573a\u666f: \u7528\u6237\u767b\u5f55\u6210\u529f &nbsp; ...&nbsp;<\/span><\/pre>\n<pre style=\"background-color: rgb(26, 26, 26);color: rgb(230, 230, 230);padding: 18px;border-radius: 8px;font-size: 14px;line-height: 1.6;overflow-x: auto;margin: 20px 0px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">@login @regression<\/span><\/pre>\n<pre style=\"background-color: rgb(26, 26, 26);color: rgb(230, 230, 230);padding: 18px;border-radius: 8px;font-size: 14px;line-height: 1.6;overflow-x: auto;margin: 20px 0px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u573a\u666f: \u767b\u5f55\u5931\u8d25\u7684\u5404\u79cd\u60c5\u51b5 &nbsp; ...&nbsp;<\/span><\/pre>\n<pre style=\"background-color: rgb(26, 26, 26);color: rgb(230, 230, 230);padding: 18px;border-radius: 8px;font-size: 14px;line-height: 1.6;overflow-x: auto;margin: 20px 0px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">@register @smoke<\/span><\/pre>\n<pre style=\"background-color: rgb(26, 26, 26);color: rgb(230, 230, 230);padding: 18px;border-radius: 8px;font-size: 14px;line-height: 1.6;overflow-x: auto;margin: 20px 0px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u573a\u666f: \u7528\u6237\u6ce8\u518c\u529f\u80fd &nbsp; ...<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">8.2 \u6309Tag\u8fd0\u884c\u6d4b\u8bd5<\/span><\/h3>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"nginx\"><code><span leaf=\"\"><span class=\"code-snippet__comment\"># \u8fd0\u884csmoke\u6d4b\u8bd5<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__attribute\">mvn<\/span>&nbsp;test -Dcucumber.filter.tags=<span class=\"code-snippet__string\">\"<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__variable\">@smoke<\/span><\/span><span class=\"code-snippet__string\">\"<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__comment\"># \u8fd0\u884csmoke AND regression<\/span><\/span><\/code><code><span leaf=\"\">mvn test -Dcucumber.filter.tags=<span class=\"code-snippet__string\">\"<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__variable\">@smoke<\/span><\/span><span class=\"code-snippet__string\">&nbsp;and&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__variable\">@regression<\/span><\/span><span class=\"code-snippet__string\">\"<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__comment\"># \u8fd0\u884csmoke OR regression<\/span><\/span><\/code><code><span leaf=\"\">mvn test -Dcucumber.filter.tags=<span class=\"code-snippet__string\">\"<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__variable\">@smoke<\/span><\/span><span class=\"code-snippet__string\">&nbsp;or&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__variable\">@regression<\/span><\/span><span class=\"code-snippet__string\">\"<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__comment\"># \u6392\u9664\u67d0\u4e2a\u6807\u7b7e<\/span><\/span><\/code><code><span leaf=\"\">mvn test -Dcucumber.filter.tags=<span class=\"code-snippet__string\">\"not&nbsp;<\/span><span class=\"code-snippet__string\"><span class=\"code-snippet__variable\">@wip<\/span><\/span><span class=\"code-snippet__string\">\"<\/span><\/span><\/code><\/pre>\n<\/section>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">8.3 Hooks\u7684\u591a\u79cd\u7528\u6cd5<\/span><\/h3>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"typescript\"><code><span leaf=\"\"><span class=\"code-snippet__keyword\">public<\/span>&nbsp;<span class=\"code-snippet__keyword\">class<\/span>&nbsp;<span class=\"code-snippet__title\">AdvancedHooks<\/span>&nbsp;{<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\">\/\/ \u5168\u5c40Before\uff0c\u6240\u6709\u573a\u666f\u6267\u884c\u524d\u8fd0\u884c<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__meta\">@Before<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">public<\/span>&nbsp;<span class=\"code-snippet__built_in\">void<\/span>&nbsp;<span class=\"code-snippet__title\">beforeScenario<\/span>() {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__title\">System<\/span>.<span class=\"code-snippet__property\">out<\/span>.<span class=\"code-snippet__title\">println<\/span>(<span class=\"code-snippet__string\">\"\u573a\u666f\u5f00\u59cb\u6267\u884c\"<\/span>);<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\">\/\/ \u5e26Tag\u7684Before\uff0c\u53ea\u6709\u5e26\u5bf9\u5e94Tag\u7684\u573a\u666f\u624d\u6267\u884c<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__meta\">@Before<\/span>(<span class=\"code-snippet__string\">\"@api\"<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">public<\/span>&nbsp;<span class=\"code-snippet__built_in\">void<\/span>&nbsp;<span class=\"code-snippet__title\">beforeApiScenario<\/span>() {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\">\/\/ \u521d\u59cb\u5316API\u6d4b\u8bd5\u73af\u5883<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\">\/\/ \u5e26Tag\u7684After<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__meta\">@After<\/span>(<span class=\"code-snippet__string\">\"@screenshot\"<\/span>)<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">public<\/span>&nbsp;<span class=\"code-snippet__built_in\">void<\/span>&nbsp;<span class=\"code-snippet__title\">takeScreenshot<\/span>(<span class=\"code-snippet__params\"><span class=\"code-snippet__title\">Scenario<\/span><\/span><span class=\"code-snippet__params\">&nbsp;scenario<\/span>) {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">if<\/span>&nbsp;(scenario.<span class=\"code-snippet__title\">isFailed<\/span>()) {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\">\/\/ \u622a\u56fe\u4fdd\u5b58<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\">\/\/ BeforeStep\u548cAfterStep<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__meta\">@BeforeStep<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">public<\/span>&nbsp;<span class=\"code-snippet__built_in\">void<\/span>&nbsp;<span class=\"code-snippet__title\">beforeStep<\/span>(<span class=\"code-snippet__params\"><span class=\"code-snippet__title\">Scenario<\/span><\/span><span class=\"code-snippet__params\">&nbsp;scenario<\/span>) {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__title\">System<\/span>.<span class=\"code-snippet__property\">out<\/span>.<span class=\"code-snippet__title\">println<\/span>(<span class=\"code-snippet__string\">\"\u51c6\u5907\u6267\u884c\u6b65\u9aa4: \"<\/span>&nbsp;+ scenario.<span class=\"code-snippet__title\">getName<\/span>());<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__meta\">@AfterStep<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">public<\/span>&nbsp;<span class=\"code-snippet__built_in\">void<\/span>&nbsp;<span class=\"code-snippet__title\">afterStep<\/span>(<span class=\"code-snippet__params\"><span class=\"code-snippet__title\">Scenario<\/span><\/span><span class=\"code-snippet__params\">&nbsp;scenario<\/span>) {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">if<\/span>&nbsp;(scenario.<span class=\"code-snippet__title\">isFailed<\/span>()) {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\">\/\/ \u8bb0\u5f55\u5931\u8d25\u6b65\u9aa4<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">}<\/span><\/code><\/pre>\n<\/section>\n<hr style=\"border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);\"  \/>\n<h2 style=\"font-size: 22px;font-weight: 600;color: rgb(26, 26, 26);margin: 35px 0px 18px;padding-left: 15px;border-left: 5px solid rgb(7, 193, 96);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u4e5d\u3001\u5143\u7d20\u5b9a\u4f4d\u7b56\u7565\uff1a\u7a33\u5b9a\u5b9a\u4f4d\u7684\u4e03\u5927\u6cd5\u5219<\/span><\/h2>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u5143\u7d20\u5b9a\u4f4d\u662fGUI\u81ea\u52a8\u5316\u7684\u6838\u5fc3\u6280\u80fd\u3002\u4ee5\u4e0b\u662f\u7ecf\u8fc7\u5b9e\u8df5\u9a8c\u8bc1\u7684\u5b9a\u4f4d\u7b56\u7565\uff1a<\/span><\/p>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u6cd5\u5219\u4e00\uff1aID\u4f18\u5148\u539f\u5219<\/span><\/h3>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">ID\u662f\u6700\u7a33\u5b9a\u4e14\u6700\u5feb\u7684\u5b9a\u4f4d\u65b9\u5f0f\u3002\u5982\u679c\u9875\u9762\u5143\u7d20\u6709ID\uff0c\u4f18\u5148\u4f7f\u7528ID\uff1a<\/span><\/p>\n<pre style=\"background-color: rgb(26, 26, 26);color: rgb(230, 230, 230);padding: 18px;border-radius: 8px;font-size: 14px;line-height: 1.6;overflow-x: auto;margin: 20px 0px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">driver.findElement(By.id(\"username\"));<\/span><\/pre>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u6cd5\u5219\u4e8c\uff1a\u907f\u514d\u7edd\u5bf9XPath<\/span><\/h3>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u7edd\u5bf9XPath\uff08\u5982<\/span><code style=\"background-color: rgb(245, 245, 245);padding: 2px 6px;border-radius: 3px;font-size: 14px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;color: rgb(232, 62, 140);\"><span leaf=\"\">\/html\/body\/div[2]\/form\/input[1]<\/span><\/code><span leaf=\"\">\uff09\u975e\u5e38\u8106\u5f31\uff0c\u9875\u9762\u7a0d\u6709\u53d8\u5316\u5c31\u4f1a\u5931\u6548\u3002<\/span><\/p>\n<p data-pm-slice=\"0 0 []\"><span leaf=\"\">\u26a0\ufe0f \u907f\u514d\u4f7f\u7528<\/span><\/p>\n<pre style=\"background: rgb(255, 243, 224);color: rgb(51, 51, 51);padding: 18px;border-radius: 8px;font-size: 14px;line-height: 1.6;overflow-x: auto;margin: 20px 0px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\/\/ \u274c \u7edd\u5bf9XPath - \u6781\u5176\u8106\u5f31 \/html\/body\/div[2]\/form\/input[1] &nbsp;<\/span><\/pre>\n<pre style=\"background: rgb(255, 243, 224);color: rgb(51, 51, 51);padding: 18px;border-radius: 8px;font-size: 14px;line-height: 1.6;overflow-x: auto;margin: 20px 0px;font-family: &quot;SF Mono&quot;, Monaco, Inconsolata, &quot;Roboto Mono&quot;, monospace;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\/\/ \u274c \u7d22\u5f15XPath - \u5bb9\u6613\u5931\u6548 \/\/div[@class='form']\/input[1]<\/span><\/pre>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u6cd5\u5219\u4e09\uff1aCSS Selector vs XPath<\/span><\/h3>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u5bf9\u4e8e\u5927\u591a\u6570\u573a\u666f\uff0cCSS Selector\u6bd4XPath\u66f4\u5feb\u3001\u66f4\u7a33\u5b9a\uff1a<\/span><\/p>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"css\"><code><span leaf=\"\">\/\/ \u2705 CSS Selector - \u63a8\u8350<\/span><\/code><code><span leaf=\"\">By<span class=\"code-snippet__selector-class\">.cssSelector<\/span>(\"<span class=\"code-snippet__selector-id\">#username<\/span>\")<\/span><\/code><code><span leaf=\"\">By<span class=\"code-snippet__selector-class\">.cssSelector<\/span>(\"<span class=\"code-snippet__selector-class\">.login-form<\/span>&nbsp;<span class=\"code-snippet__selector-class\">.btn-primary<\/span>\")<\/span><\/code><code><span leaf=\"\">By<span class=\"code-snippet__selector-class\">.cssSelector<\/span>(\"<span class=\"code-snippet__selector-tag\">input<\/span><span class=\"code-snippet__selector-attr\">[name=<\/span><span class=\"code-snippet__selector-attr\"><span class=\"code-snippet__string\">'username'<\/span><\/span><span class=\"code-snippet__selector-attr\">]<\/span>\")<\/span><\/code><code><span leaf=\"\">\/\/ \u2705 \u76f8\u5bf9XPath - \u53ef\u63a5\u53d7<\/span><\/code><code><span leaf=\"\">By<span class=\"code-snippet__selector-class\">.xpath<\/span>(\"\/\/<span class=\"code-snippet__selector-tag\">input<\/span><span class=\"code-snippet__selector-attr\">[@id=<\/span><span class=\"code-snippet__selector-attr\"><span class=\"code-snippet__string\">'username'<\/span><\/span><span class=\"code-snippet__selector-attr\">]<\/span>\")<\/span><\/code><code><span leaf=\"\">By<span class=\"code-snippet__selector-class\">.xpath<\/span>(\"\/\/<span class=\"code-snippet__selector-tag\">form<\/span><span class=\"code-snippet__selector-attr\">[@id=<\/span><span class=\"code-snippet__selector-attr\"><span class=\"code-snippet__string\">'login'<\/span><\/span><span class=\"code-snippet__selector-attr\">]<\/span>\/\/<span class=\"code-snippet__selector-tag\">button<\/span>\")<\/span><\/code><\/pre>\n<\/section>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u6cd5\u5219\u56db\uff1a\u52a8\u6001\u5143\u7d20\u5904\u7406<\/span><\/h3>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u5bf9\u4e8e\u52a8\u6001\u52a0\u8f7d\u7684\u5143\u7d20\uff0c\u4f7f\u7528\u663e\u5f0f\u7b49\u5f85\uff1a<\/span><\/p>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"java\"><code><span leaf=\"\"><span class=\"code-snippet__comment\">\/\/ \u7b49\u5f85\u5143\u7d20\u53ef\u89c1<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__type\">WebDriverWait<\/span>&nbsp;<span class=\"code-snippet__variable\">wait<\/span>&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;<span class=\"code-snippet__keyword\">new<\/span>&nbsp;<span class=\"code-snippet__title\">WebDriverWait<\/span>(driver, Duration.ofSeconds(<span class=\"code-snippet__number\">10<\/span>));<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__type\">WebElement<\/span>&nbsp;<span class=\"code-snippet__variable\">element<\/span>&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;wait.until(<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; ExpectedConditions.visibilityOfElementLocated(By.id(<span class=\"code-snippet__string\">\"dynamic-content\"<\/span>))<\/span><\/code><code><span leaf=\"\">);<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__comment\">\/\/ \u7b49\u5f85\u5143\u7d20\u53ef\u70b9\u51fb<\/span><\/span><\/code><code><span leaf=\"\">wait.until(ExpectedConditions.elementToBeClickable(By.id(<span class=\"code-snippet__string\">\"submit-btn\"<\/span>)));<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__comment\">\/\/ \u7b49\u5f85\u5143\u7d20\u5305\u542b\u7279\u5b9a\u6587\u672c<\/span><\/span><\/code><code><span leaf=\"\">wait.until(ExpectedConditions.textToBePresentInElement(<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; By.className(<span class=\"code-snippet__string\">\"status\"<\/span>),&nbsp;<span class=\"code-snippet__string\">\"Success\"<\/span><\/span><\/code><code><span leaf=\"\">));<\/span><\/code><\/pre>\n<\/section>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u6cd5\u5219\u4e94\uff1aiframe\u5207\u6362<\/span><\/h3>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u5982\u679c\u5143\u7d20\u5728iframe\u4e2d\uff0c\u9700\u8981\u5148\u5207\u6362\u5230iframe\uff1a<\/span><\/p>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"java\"><code><span leaf=\"\"><span class=\"code-snippet__comment\">\/\/ \u901a\u8fc7ID\u6216Name\u5207\u6362<\/span><\/span><\/code><code><span leaf=\"\">driver.switchTo().frame(<span class=\"code-snippet__string\">\"iframe-id\"<\/span>);<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__comment\">\/\/ \u901a\u8fc7WebElement\u5207\u6362<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__type\">WebElement<\/span>&nbsp;<span class=\"code-snippet__variable\">iframe<\/span>&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;driver.findElement(By.cssSelector(<span class=\"code-snippet__string\">\"#content-frame\"<\/span>));<\/span><\/code><code><span leaf=\"\">driver.switchTo().frame(iframe);<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__comment\">\/\/ \u5207\u6362\u56de\u4e3b\u6587\u6863<\/span><\/span><\/code><code><span leaf=\"\">driver.switchTo().defaultContent();<\/span><\/code><\/pre>\n<\/section>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u6cd5\u5219\u516d\uff1a\u65b0\u7a97\u53e3\u5904\u7406<\/span><\/h3>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"javascript\"><code><span leaf=\"\"><span class=\"code-snippet__comment\">\/\/ \u83b7\u53d6\u5f53\u524d\u7a97\u53e3\u53e5\u67c4<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__title\">String<\/span>&nbsp;mainWindow = driver.<span class=\"code-snippet__title\">getWindowHandle<\/span>();<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__comment\">\/\/ \u70b9\u51fb\u6253\u5f00\u65b0\u7a97\u53e3\u7684\u5143\u7d20<\/span><\/span><\/code><code><span leaf=\"\">driver.<span class=\"code-snippet__title\">findElement<\/span>(<span class=\"code-snippet__title\">By<\/span>.<span class=\"code-snippet__title\">linkText<\/span>(<span class=\"code-snippet__string\">\"\u65b0\u7a97\u53e3\u94fe\u63a5\"<\/span>)).<span class=\"code-snippet__title\">click<\/span>();<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__comment\">\/\/ \u5207\u6362\u5230\u65b0\u7a97\u53e3<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">for<\/span>&nbsp;(<span class=\"code-snippet__title\">String<\/span>&nbsp;windowHandle : driver.<span class=\"code-snippet__title\">getWindowHandles<\/span>()) {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">if<\/span>&nbsp;(!windowHandle.<span class=\"code-snippet__title\">equals<\/span>(mainWindow)) {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; driver.<span class=\"code-snippet__title\">switchTo<\/span>().<span class=\"code-snippet__title\">window<\/span>(windowHandle);<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">break<\/span>;<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">}<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__comment\">\/\/ \u64cd\u4f5c\u65b0\u7a97\u53e3\u5185\u5bb9<\/span><\/span><\/code><code><span leaf=\"\">driver.<span class=\"code-snippet__title\">findElement<\/span>(<span class=\"code-snippet__title\">By<\/span>.<span class=\"code-snippet__title\">id<\/span>(<span class=\"code-snippet__string\">\"new-window-content\"<\/span>)).<span class=\"code-snippet__title\">sendKeys<\/span>(<span class=\"code-snippet__string\">\"test\"<\/span>);<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__comment\">\/\/ \u5173\u95ed\u65b0\u7a97\u53e3\u5e76\u5207\u6362\u56de\u4e3b\u7a97\u53e3<\/span><\/span><\/code><code><span leaf=\"\">driver.<span class=\"code-snippet__title\">close<\/span>();<\/span><\/code><code><span leaf=\"\">driver.<span class=\"code-snippet__title\">switchTo<\/span>().<span class=\"code-snippet__title\">window<\/span>(mainWindow);<\/span><\/code><\/pre>\n<\/section>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u6cd5\u5219\u4e03\uff1a\u7b49\u5f85\u7b56\u7565\u603b\u7ed3<\/span><\/h3>\n<table style=\"width: 677px;border-collapse: collapse;margin: 20px 0px;font-size: 14px;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\">\n<tbody>\n<tr>\n<th style=\"background-color: rgb(7, 193, 96);color: rgb(255, 255, 255);padding: 12px 10px;text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\"><span leaf=\"\"><span textstyle=\"\" style=\"font-size: 16px;color: #000000;\">\u7b49\u5f85\u65b9\u5f0f<\/span><\/span><\/section>\n<\/th>\n<th style=\"background-color: rgb(7, 193, 96);color: rgb(255, 255, 255);padding: 12px 10px;text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\"><span leaf=\"\"><span textstyle=\"\" style=\"font-size: 16px;color: #000000;\">\u7279\u70b9<\/span><\/span><\/section>\n<\/th>\n<th style=\"background-color: rgb(7, 193, 96);color: rgb(255, 255, 255);padding: 12px 10px;text-align: left;font-weight: 600;\">\n<section style=\"text-align: center;\"><span leaf=\"\"><span textstyle=\"\" style=\"font-size: 16px;color: #000000;\">\u63a8\u8350\u7a0b\u5ea6<\/span><\/span><\/section>\n<\/th>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">Thread.sleep()<\/span><\/section>\n<\/td>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">\u5f3a\u5236\u7b49\u5f85\uff0c\u4e0d\u63a8\u8350<\/span><\/section>\n<\/td>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">\u2b50 \u4e0d\u63a8\u8350<\/span><\/section>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">\u9690\u5f0f\u7b49\u5f85<\/span><\/section>\n<\/td>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">\u5168\u5c40\u8bbe\u7f6e\uff0c\u4e00\u6b21\u914d\u7f6e<\/span><\/section>\n<\/td>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">\u2b50\u2b50 \u53ef\u7528<\/span><\/section>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">\u663e\u5f0f\u7b49\u5f85<\/span><\/section>\n<\/td>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">\u667a\u80fd\u7b49\u5f85\uff0c\u63a8\u8350\u4f7f\u7528<\/span><\/section>\n<\/td>\n<td style=\"padding: 12px 10px;border-bottom: 1px solid rgb(238, 238, 238);\">\n<section><span leaf=\"\">\u2b50\u2b50\u2b50 \u5f3a\u70c8\u63a8\u8350<\/span><\/section>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<section style=\"text-indent: 2em;text-align: left;\"><span style=\"color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;float: none;display: inline !important;\" data-pm-slice=\"0 0 []\"><span style=\"color: rgb(136, 136, 136);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 13px;font-style: italic;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;float: none;display: inline !important;\" data-pm-slice=\"0 0 []\"><span leaf=\"\"><br  \/><\/span><\/span><\/span><\/section>\n<hr style=\"border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);\"  \/>\n<h2 style=\"font-size: 22px;font-weight: 600;color: rgb(26, 26, 26);margin: 35px 0px 18px;padding-left: 15px;border-left: 5px solid rgb(7, 193, 96);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u5341\u3001\u9879\u76ee\u7ed3\u6784\u6700\u4f73\u5b9e\u8df5<\/span><\/h2>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">10.1 Page Object Model\u6a21\u5f0f<\/span><\/h3>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">Page Object Model\uff08POM\uff09\u662fGUI\u81ea\u52a8\u5316\u6d4b\u8bd5\u7684\u6700\u4f73\u5b9e\u8df5\uff0c\u5b83\u5c06\u9875\u9762\u5143\u7d20\u548c\u64cd\u4f5c\u5c01\u88c5\u5230\u72ec\u7acb\u7684\u7c7b\u4e2d\uff1a<\/span><\/p>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"typescript\"><code><span leaf=\"\"><span class=\"code-snippet__comment\">\/**<\/span><\/span><\/code><code><span leaf=\"\">&nbsp;* \u767b\u5f55\u9875\u9762\u5bf9\u8c61<\/span><\/code><code><span leaf=\"\">&nbsp;*\/<\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__keyword\">public<\/span>&nbsp;<span class=\"code-snippet__keyword\">class<\/span>&nbsp;<span class=\"code-snippet__title\">LoginPage<\/span>&nbsp;{<\/span><\/code><code><span leaf=\"\"><br  \/><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">private<\/span>&nbsp;<span class=\"code-snippet__title\">WebDriver<\/span>&nbsp;driver;<\/span><\/code><code><span leaf=\"\"><br  \/><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\">\/\/ \u9875\u9762\u5143\u7d20\uff08\u79c1\u6709\uff09<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">private<\/span>&nbsp;<span class=\"code-snippet__title\">By<\/span>&nbsp;usernameInput =&nbsp;<span class=\"code-snippet__title\">By<\/span>.<span class=\"code-snippet__title\">id<\/span>(<span class=\"code-snippet__string\">\"username\"<\/span>);<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">private<\/span>&nbsp;<span class=\"code-snippet__title\">By<\/span>&nbsp;passwordInput =&nbsp;<span class=\"code-snippet__title\">By<\/span>.<span class=\"code-snippet__title\">id<\/span>(<span class=\"code-snippet__string\">\"password\"<\/span>);<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">private<\/span>&nbsp;<span class=\"code-snippet__title\">By<\/span>&nbsp;loginButton =&nbsp;<span class=\"code-snippet__title\">By<\/span>.<span class=\"code-snippet__title\">id<\/span>(<span class=\"code-snippet__string\">\"login-btn\"<\/span>);<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">private<\/span>&nbsp;<span class=\"code-snippet__title\">By<\/span>&nbsp;errorMessage =&nbsp;<span class=\"code-snippet__title\">By<\/span>.<span class=\"code-snippet__title\">cssSelector<\/span>(<span class=\"code-snippet__string\">\".error-message\"<\/span>);<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">private<\/span>&nbsp;<span class=\"code-snippet__title\">By<\/span>&nbsp;welcomeMessage =&nbsp;<span class=\"code-snippet__title\">By<\/span>.<span class=\"code-snippet__title\">cssSelector<\/span>(<span class=\"code-snippet__string\">\".welcome-message\"<\/span>);<\/span><\/code><code><span leaf=\"\"><br  \/><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\">\/\/ \u6784\u9020\u51fd\u6570<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">public<\/span>&nbsp;<span class=\"code-snippet__title\">LoginPage<\/span>(<span class=\"code-snippet__title\">WebDriver<\/span>&nbsp;driver) {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__variable\">this<\/span>.<span class=\"code-snippet__property\">driver<\/span>&nbsp;= driver;<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\"><br  \/><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\">\/\/ \u9875\u9762\u64cd\u4f5c\u65b9\u6cd5\uff08\u516c\u6709\uff09<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">public<\/span>&nbsp;<span class=\"code-snippet__built_in\">void<\/span>&nbsp;<span class=\"code-snippet__title\">inputUsername<\/span>(<span class=\"code-snippet__params\"><span class=\"code-snippet__title\">String<\/span><\/span><span class=\"code-snippet__params\">&nbsp;username<\/span>) {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; driver.<span class=\"code-snippet__title\">findElement<\/span>(usernameInput).<span class=\"code-snippet__title\">clear<\/span>();<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; driver.<span class=\"code-snippet__title\">findElement<\/span>(usernameInput).<span class=\"code-snippet__title\">sendKeys<\/span>(username);<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\"><br  \/><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">public<\/span>&nbsp;<span class=\"code-snippet__built_in\">void<\/span>&nbsp;<span class=\"code-snippet__title\">inputPassword<\/span>(<span class=\"code-snippet__params\"><span class=\"code-snippet__title\">String<\/span><\/span><span class=\"code-snippet__params\">&nbsp;password<\/span>) {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; driver.<span class=\"code-snippet__title\">findElement<\/span>(passwordInput).<span class=\"code-snippet__title\">clear<\/span>();<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; driver.<span class=\"code-snippet__title\">findElement<\/span>(passwordInput).<span class=\"code-snippet__title\">sendKeys<\/span>(password);<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\"><br  \/><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">public<\/span>&nbsp;<span class=\"code-snippet__built_in\">void<\/span>&nbsp;<span class=\"code-snippet__title\">clickLogin<\/span>() {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; driver.<span class=\"code-snippet__title\">findElement<\/span>(loginButton).<span class=\"code-snippet__title\">click<\/span>();<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\"><br  \/><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">public<\/span>&nbsp;<span class=\"code-snippet__title\">String<\/span>&nbsp;<span class=\"code-snippet__title\">getErrorMessage<\/span>() {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">return<\/span>&nbsp;driver.<span class=\"code-snippet__title\">findElement<\/span>(errorMessage).<span class=\"code-snippet__title\">getText<\/span>();<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\"><br  \/><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">public<\/span>&nbsp;<span class=\"code-snippet__title\">String<\/span>&nbsp;<span class=\"code-snippet__title\">getWelcomeMessage<\/span>() {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">return<\/span>&nbsp;driver.<span class=\"code-snippet__title\">findElement<\/span>(welcomeMessage).<span class=\"code-snippet__title\">getText<\/span>();<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\"><br  \/><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__comment\">\/\/ \u7ec4\u5408\u64cd\u4f5c\uff08\u9875\u9762\u7ea7\u65b9\u6cd5\uff09<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__keyword\">public<\/span>&nbsp;<span class=\"code-snippet__built_in\">void<\/span>&nbsp;<span class=\"code-snippet__title\">login<\/span>(<span class=\"code-snippet__params\"><span class=\"code-snippet__title\">String<\/span><\/span><span class=\"code-snippet__params\">&nbsp;username,&nbsp;<\/span><span class=\"code-snippet__params\"><span class=\"code-snippet__title\">String<\/span><\/span><span class=\"code-snippet__params\">&nbsp;password<\/span>) {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__title\">inputUsername<\/span>(username);<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__title\">inputPassword<\/span>(password);<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class=\"code-snippet__title\">clickLogin<\/span>();<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">}<\/span><\/code><\/pre>\n<\/section>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">10.2 \u5b8c\u6574\u9879\u76ee\u76ee\u5f55\u7ed3\u6784<\/span><\/h3>\n<section style=\"text-align: center;\" nodeleaf=\"\">\n<figure class=\"wx-qr-wrap\"><img decoding=\"async\" class=\"rich_pages wxw-img\" data-aistatus=\"1\" data-imgfileid=\"100000463\" data-s=\"300,640\" data-type=\"png\" type=\"block\" src=\"https:\/\/mmbiz.qpic.cn\/mmbiz_png\/BWmfcibGhS1KK7JWDNkibmgm8WmPULSmmuvf0nvictx28No7hedMkJ9wsf4rA1GZNhs9v4ibqcRqSO8MLKTVPL54ibrxleTSwibg6aNm1h5HXyXyY\/640?wx_fmt=png&#038;from=appmsg\" \/><figcaption class=\"wx-qr-tip\"><img decoding=\"async\" src=\"https:\/\/www.deartester.com\/wp-content\/uploads\/2026\/09\/wechat-qr.jpg\" alt=\"\u5fae\u4fe1\u516c\u4f17\u53f7\u4e8c\u7ef4\u7801\" loading=\"lazy\"><span>\u56fe\u7247\u5f15\u81ea\u5fae\u4fe1\u516c\u4f17\u53f7\uff0c\u626b\u7801\u5173\u6ce8\u9605\u8bfb\u539f\u6587<\/span><\/figcaption><\/figure>\n<\/section>\n<hr style=\"border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);\"  \/>\n<section style=\"text-indent: 2em;text-align: left;\"><span style=\"color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;float: none;display: inline !important;\" data-pm-slice=\"0 0 []\"><span style=\"color: rgb(136, 136, 136);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 13px;font-style: italic;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;float: none;display: inline !important;\" data-pm-slice=\"0 0 []\"><span leaf=\"\"><br  \/><\/span><\/span><\/span><\/section>\n<h2 style=\"font-size: 22px;font-weight: 600;color: rgb(26, 26, 26);margin: 35px 0px 18px;padding-left: 15px;border-left: 5px solid rgb(7, 193, 96);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u5341\u4e00\u3001\u5e38\u89c1\u95ee\u9898\u4e0e\u89e3\u51b3\u65b9\u6848<\/span><\/h2>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u95ee\u9898\u4e00\uff1a\u5143\u7d20\u627e\u4e0d\u5230\uff08NoSuchElementException\uff09<\/span><\/h3>\n<p><span leaf=\"\">\u26a0\ufe0f \u5e38\u89c1\u539f\u56e0<\/span><\/p>\n<ul style=\"margin: 15px 0px;padding-left: 2em;\" class=\"list-paddingleft-1\"><\/ul>\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"576\">\n<ul style=\"margin: 15px 0px;padding-left: 2em;\" class=\"list-paddingleft-1\">\n<li style=\"margin: 8px 0px;\">\n<section><span leaf=\"\">\u5143\u7d20\u8fd8\u672a\u52a0\u8f7d\u5b8c\u6210\uff08\u5f02\u6b65\u52a0\u8f7d\u95ee\u9898\uff09<\/span><\/section>\n<\/li>\n<li style=\"margin: 8px 0px;\">\n<section><span leaf=\"\">\u5b9a\u4f4d\u8868\u8fbe\u5f0f\u9519\u8bef<\/span><\/section>\n<\/li>\n<li style=\"margin: 8px 0px;\">\n<section><span leaf=\"\">\u5143\u7d20\u5728iframe\u4e2d<\/span><\/section>\n<\/li>\n<li style=\"margin: 8px 0px;\">\n<section><span leaf=\"\">\u9875\u9762\u8df3\u8f6c\u5230\u65b0\u7a97\u53e3<\/span><\/section>\n<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"java\"><code><span leaf=\"\"><span class=\"code-snippet__comment\">\/\/ \u274c \u9519\u8bef\u7684\u7b49\u5f85\u65b9\u5f0f<\/span><\/span><\/code><code><span leaf=\"\">driver.findElement(By.id(<span class=\"code-snippet__string\">\"content\"<\/span>)).click(); &nbsp;<span class=\"code-snippet__comment\">\/\/ \u76f4\u63a5\u67e5\u627e\uff0c\u53ef\u80fd\u627e\u4e0d\u5230<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__comment\">\/\/ \u2705 \u6b63\u786e\u7684\u7b49\u5f85\u65b9\u5f0f<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__type\">WebDriverWait<\/span>&nbsp;<span class=\"code-snippet__variable\">wait<\/span>&nbsp;<span class=\"code-snippet__operator\">=<\/span>&nbsp;<span class=\"code-snippet__keyword\">new<\/span>&nbsp;<span class=\"code-snippet__title\">WebDriverWait<\/span>(driver, Duration.ofSeconds(<span class=\"code-snippet__number\">10<\/span>));<\/span><\/code><code><span leaf=\"\">wait.until(ExpectedConditions.elementToBeClickable(By.id(<span class=\"code-snippet__string\">\"content\"<\/span>))).click();<\/span><\/code><\/pre>\n<\/section>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u95ee\u9898\u4e8c\uff1a\u4e2d\u6587\u7f16\u7801\u95ee\u9898<\/span><\/h3>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"xml\"><code><span leaf=\"\"><span class=\"code-snippet__comment\">&lt;!-- pom.xml\u4e2d\u6307\u5b9aUTF-8\u7f16\u7801 --&gt;<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">properties<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp;&nbsp;<span class=\"code-snippet__tag\">&lt;<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">project.build.sourceEncoding<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span>UTF-8<span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">project.build.sourceEncoding<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__tag\">&lt;\/<\/span><span class=\"code-snippet__tag\"><span class=\"code-snippet__name\">properties<\/span><\/span><span class=\"code-snippet__tag\">&gt;<\/span><\/span><\/code><code><span leaf=\"\"><span class=\"code-snippet__comment\">&lt;!-- IDEA\u4e2d\u8bbe\u7f6e\u6587\u4ef6\u7f16\u7801\uff1aFile \u2192 Settings \u2192 Editor \u2192 File Encodings --&gt;<\/span><\/span><\/code><\/pre>\n<\/section>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u95ee\u9898\u4e09\uff1aCI\/CD\u96c6\u6210\uff08Jenkins\uff09<\/span><\/h3>\n<section class=\"code-snippet__fix code-snippet__js\">\n<ul class=\"code-snippet__line-index code-snippet__js\">\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<li><\/li>\n<\/ul>\n<pre class=\"code-snippet__js\" data-lang=\"python\"><code><span leaf=\"\"><span class=\"code-snippet__comment\"># Jenkinsfile\u4e2d\u4f7f\u7528Maven\u8fd0\u884c\u6d4b\u8bd5<\/span><\/span><\/code><code><span leaf=\"\">pipeline {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; agent&nbsp;<span class=\"code-snippet__built_in\">any<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; stages {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; stage(<span class=\"code-snippet__string\">'Run Cucumber Tests'<\/span>) {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; steps {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bat&nbsp;<span class=\"code-snippet__string\">'mvn test -Dcucumber.filter.tags=\"@regression\"'<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; post {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; always {<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; junit&nbsp;<span class=\"code-snippet__string\">'target\/surefire-reports\/*.xml'<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cucumber buildStatus:&nbsp;<span class=\"code-snippet__string\">'FAILURE'<\/span>,<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; reportTitle:&nbsp;<span class=\"code-snippet__string\">'Cucumber Test Report'<\/span>,<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fileIncludePattern:&nbsp;<span class=\"code-snippet__string\">'**\/cucumber-reports.json'<\/span><\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; &nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">&nbsp; &nbsp; }<\/span><\/code><code><span leaf=\"\">}<\/span><\/code><\/pre>\n<\/section>\n<hr style=\"border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);\"  \/>\n<h2 style=\"font-size: 22px;font-weight: 600;color: rgb(26, 26, 26);margin: 35px 0px 18px;padding-left: 15px;border-left: 5px solid rgb(7, 193, 96);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u5341\u4e8c\u3001\u5b66\u4e60\u8def\u5f84\u4e0e\u8d44\u6e90\u63a8\u8350<\/span><\/h2>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u5b66\u4e60\u8def\u5f84\u5efa\u8bae<\/span><\/h3>\n<section style=\"text-indent: 2em;text-align: center;\"><span style=\"color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;float: none;display: inline !important;\" data-pm-slice=\"0 0 []\"><span style=\"color: rgb(136, 136, 136);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 13px;font-style: italic;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;float: none;display: inline !important;\" data-pm-slice=\"0 0 []\"><span style=\"color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 600;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;float: none;display: inline !important;\" data-pm-slice=\"0 0 []\"><span leaf=\"\"><span textstyle=\"\" style=\"color: #d92142;\">\ud83d\udcda \u4ece\u65b0\u624b\u5230\u8fdb\u9636\u7684\u5b66\u4e60\u8def\u5f84<\/span><\/span><\/span><\/span><\/span><\/section>\n<section style=\"text-align: center;\" nodeleaf=\"\">\n<figure class=\"wx-qr-wrap\"><img decoding=\"async\" class=\"rich_pages wxw-img\" data-aistatus=\"1\" data-imgfileid=\"100000464\" data-s=\"300,640\" data-type=\"png\" type=\"block\" src=\"https:\/\/mmbiz.qpic.cn\/sz_mmbiz_png\/BWmfcibGhS1IAm9yZXfyjPVm5d47JAdTyX2Md0ZKDPHGEz99YAsDhjvlRLPYHibubmKZ3F9HhFjpvUEJWFBSUc6v1WGFGHL8cZhoOWaHVu8kw\/640?wx_fmt=png&#038;from=appmsg\" \/><figcaption class=\"wx-qr-tip\"><img decoding=\"async\" src=\"https:\/\/www.deartester.com\/wp-content\/uploads\/2026\/09\/wechat-qr.jpg\" alt=\"\u5fae\u4fe1\u516c\u4f17\u53f7\u4e8c\u7ef4\u7801\" loading=\"lazy\"><span>\u56fe\u7247\u5f15\u81ea\u5fae\u4fe1\u516c\u4f17\u53f7\uff0c\u626b\u7801\u5173\u6ce8\u9605\u8bfb\u539f\u6587<\/span><\/figcaption><\/figure>\n<\/section>\n<p style=\"text-indent: 2em;margin: 10px 0px;text-align: left;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><strong><span leaf=\"\"><span textstyle=\"\" style=\"color: #0052ff;font-weight: bold;\">\u7b2c\u4e00\u9636\u6bb5\uff081-2\u5468\uff09<\/span><\/span><\/strong><span leaf=\"\"><span textstyle=\"\" style=\"color: #0052ff;font-weight: bold;\">\uff1a<\/span>\u5b8c\u6210\u672c\u6559\u7a0b\u6240\u6709\u793a\u4f8b\uff0c\u7406\u89e3Gherkin\u8bed\u6cd5\u548cStep Definitions\u7f16\u5199<\/span><\/p>\n<p style=\"text-indent: 2em;margin: 10px 0px;text-align: left;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><strong><span leaf=\"\"><span textstyle=\"\" style=\"color: #0052ff;\">\u7b2c\u4e8c\u9636\u6bb5\uff082-4\u5468\uff09<\/span><\/span><\/strong><span leaf=\"\"><span textstyle=\"\" style=\"color: #0052ff;\">\uff1a<\/span>\u5c1d\u8bd5\u7528Cucumber\u5b9e\u73b0\u81ea\u5df1\u7684\u9879\u76ee\uff0c\u719f\u6089Selenium\u5404\u79cd\u64cd\u4f5c<\/span><\/p>\n<p style=\"text-indent: 2em;margin: 10px 0px;text-align: left;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><strong><span leaf=\"\"><span textstyle=\"\" style=\"color: #0052ff;\">\u7b2c\u4e09\u9636\u6bb5\uff081-2\u5468\uff09<\/span><\/span><\/strong><span leaf=\"\"><span textstyle=\"\" style=\"color: #0052ff;\">\uff1a<\/span>\u96c6\u6210Jenkins\u5b9e\u73b0\u81ea\u52a8\u5316\u8fd0\u884c\uff0c\u5b66\u4f1a\u751f\u6210\u548c\u67e5\u770b\u6d4b\u8bd5\u62a5\u544a<\/span><\/p>\n<p style=\"text-indent: 2em;margin: 10px 0px;text-align: left;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><strong><span leaf=\"\"><span textstyle=\"\" style=\"color: #0052ff;\">\u7b2c\u56db\u9636\u6bb5\uff08\u6301\u7eed\uff09<\/span><\/span><\/strong><span leaf=\"\"><span textstyle=\"\" style=\"color: #0052ff;\">\uff1a<\/span>\u5c01\u88c5\u81ea\u5df1\u7684\u6d4b\u8bd5\u6846\u67b6\uff0c\u5f15\u5165\u8bbe\u8ba1\u6a21\u5f0f\uff0c\u56e2\u961f\u534f\u4f5c\u4f18\u5316<\/span><\/p>\n<h3 style=\"font-size: 18px;font-weight: 600;color: rgb(51, 51, 51);margin: 25px 0px 12px;font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: center;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u63a8\u8350\u5b66\u4e60\u8d44\u6e90<\/span><\/h3>\n<section><strong><span leaf=\"\"><span textstyle=\"\" style=\"color: rgb(0, 82, 255);\">Cucumber\u5b98\u65b9\u6587\u6863<\/span><\/span><\/strong><span leaf=\"\">\uff1ahttps:\/\/cucumber.io\/docs\/guides\/<\/span><\/section>\n<section><strong><span leaf=\"\"><span textstyle=\"\" style=\"color: rgb(0, 82, 255);\">Selenium\u5b98\u65b9\u6587\u6863<\/span><\/span><\/strong><span leaf=\"\">\uff1ahttps:\/\/www.selenium.dev\/documentation\/<\/span><\/section>\n<section><strong><span leaf=\"\"><span textstyle=\"\" style=\"color: rgb(0, 82, 255);\">Cucumber Book<\/span><\/span><\/strong><span leaf=\"\">\uff1a\u300aCucumber: Behavior-Driven Development\u300b<\/span><\/section>\n<section><strong><span leaf=\"\"><span textstyle=\"\" style=\"color: rgb(0, 82, 255);\">GitHub\u793a\u4f8b\u9879\u76ee<\/span><\/span><\/strong><span leaf=\"\">\uff1a\u641c\u7d22&#8221;cucumber-selenium-java&#8221;\u83b7\u53d6\u5f00\u6e90\u793a\u4f8b<\/span><\/section>\n<hr style=\"border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);\"  \/>\n<section><span leaf=\"\"><br  \/><\/span><\/section>\n<h2 style=\"font-size: 22px;font-weight: 600;color: rgb(26, 26, 26);margin: 35px 0px 18px;padding-left: 15px;border-left: 5px solid rgb(7, 193, 96);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: center;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" data-pm-slice=\"0 0 []\"><span leaf=\"\">\u603b\u7ed3<\/span><\/h2>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u901a\u8fc7\u672c\u6559\u7a0b\uff0c\u4f60\u5e94\u8be5\u5df2\u7ecf\u638c\u63e1\u4e86\u4ee5\u4e0b\u6838\u5fc3\u6280\u80fd\uff1a<\/span><\/p>\n<ul style=\"margin: 15px 0px;padding-left: 2em;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: center;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\" class=\"list-paddingleft-1\">\n<li style=\"margin: 8px 0px;\">\n<section style=\"text-align: left;\"><span leaf=\"\">\u2705 \u7406\u89e3Cucumber\u548cBDD\u7684\u6838\u5fc3\u6982\u5ff5<\/span><\/section>\n<\/li>\n<li style=\"margin: 8px 0px;\">\n<section style=\"text-align: left;\"><span leaf=\"\">\u2705 \u642d\u5efa\u5b8c\u6574\u7684Cucumber+Selenium\u5f00\u53d1\u73af\u5883<\/span><\/section>\n<\/li>\n<li style=\"margin: 8px 0px;\">\n<section style=\"text-align: left;\"><span leaf=\"\">\u2705 \u7f16\u5199Gherkin\u683c\u5f0f\u7684Feature\u6587\u4ef6<\/span><\/section>\n<\/li>\n<li style=\"margin: 8px 0px;\">\n<section style=\"text-align: left;\"><span leaf=\"\">\u2705 \u7f16\u5199Step Definitions\u8fde\u63a5\u4ee3\u7801\u4e0e\u4e1a\u52a1\u63cf\u8ff0<\/span><\/section>\n<\/li>\n<li style=\"margin: 8px 0px;\">\n<section style=\"text-align: left;\"><span leaf=\"\">\u2705 \u4f7f\u7528Hooks\u7ba1\u7406\u6d4b\u8bd5\u751f\u547d\u5468\u671f<\/span><\/section>\n<\/li>\n<li style=\"margin: 8px 0px;\">\n<section style=\"text-align: left;\"><span leaf=\"\">\u2705 \u4f7f\u7528Tags\u7ec4\u7ec7\u548c\u7ba1\u7406\u6d4b\u8bd5\u7528\u4f8b<\/span><\/section>\n<\/li>\n<li style=\"margin: 8px 0px;\">\n<section style=\"text-align: left;\"><span leaf=\"\">\u2705 \u638c\u63e1\u6570\u636e\u9a71\u52a8\u6d4b\u8bd5\u65b9\u6cd5<\/span><\/section>\n<\/li>\n<li style=\"margin: 8px 0px;\">\n<section style=\"text-align: left;\"><span leaf=\"\">\u2705 \u4e86\u89e3Page Object Model\u6700\u4f73\u5b9e\u8df5<\/span><\/section>\n<\/li>\n<\/ul>\n<section><span leaf=\"\"><br  \/><\/span><\/section>\n<p data-pm-slice=\"0 0 []\" style=\"text-align: center;\"><span leaf=\"\"><span textstyle=\"\" style=\"color: #d92142;font-weight: bold;\">\ud83d\udccc \u6838\u5fc3\u8981\u70b9\u56de\u987e<\/span><\/span><\/p>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><strong><span leaf=\"\">Cucumber\u7684\u4ef7\u503c<\/span><\/strong><span leaf=\"\">\u4e0d\u5728\u4e8e\u5b83\u6bd4Selenium\u66f4\u5f3a\u5927\uff0c\u800c\u5728\u4e8e\u5b83\u8ba9\u6d4b\u8bd5\u7528\u4f8b\u53d8\u5f97<\/span><strong><span leaf=\"\">\u53ef\u8bfb\u3001\u53ef\u534f\u4f5c\u3001\u53ef\u7ef4\u62a4<\/span><\/strong><span leaf=\"\">\u3002\u7528\u81ea\u7136\u8bed\u8a00\u5199\u6d4b\u8bd5\uff0c\u8ba9\u56e2\u961f\u6210\u5458\u90fd\u80fd\u53c2\u4e0e\u8fdb\u6765\uff0c\u8fd9\u624d\u662fBDD\u7684\u771f\u6b63\u610f\u4e49\u3002<\/span><\/p>\n<p style=\"text-indent: 2em;margin: 15px 0px;text-align: justify;color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;\"><span leaf=\"\">\u8bb0\u4f4f\uff1a\u5de5\u5177\u53ea\u662f\u624b\u6bb5\uff0c\u63d0\u9ad8\u6d4b\u8bd5\u6548\u7387\u3001\u4fdd\u8bc1\u8f6f\u4ef6\u8d28\u91cf\u624d\u662f\u76ee\u7684\u3002\u795d\u4f60\u5728GUI\u81ea\u52a8\u5316\u6d4b\u8bd5\u7684\u9053\u8def\u4e0a\u8d8a\u8d70\u8d8a\u8fdc\uff01<\/span><\/p>\n<section style=\"text-indent: 2em;text-align: left;\"><span style=\"color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;float: none;display: inline !important;\" data-pm-slice=\"0 0 []\"><span style=\"color: rgb(136, 136, 136);font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size: 13px;font-style: italic;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;float: none;display: inline !important;\" data-pm-slice=\"0 0 []\"><span leaf=\"\"><br  \/><\/span><\/span><\/span><\/section>\n<p style=\"display: none;\"><mp-style-type data-value=\"3\"><\/mp-style-type><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5982\u679c\u4f60\u662f\u6d4b\u8bd5\u5de5\u7a0b\u5e08\uff0c\u4e00\u5b9a\u9047\u5230\u8fc7\u8fd9\u6837\u7684\u56f0\u6270\uff1aGUI\u81ea\u52a8\u5316\u6d4b\u8bd5\u811a\u672c\u5199\u597d\u4e86\uff0c\u4f46\u8fc7\u4e0d\u4e86\u591a\u4e45\u9875\u9762\u6539\u4e2aclass\u540d\uff0c\u811a\u672c\u5c31 [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":126,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-127","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-auto-tools"],"_links":{"self":[{"href":"https:\/\/www.deartester.com\/index.php\/wp-json\/wp\/v2\/posts\/127","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.deartester.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.deartester.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.deartester.com\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.deartester.com\/index.php\/wp-json\/wp\/v2\/comments?post=127"}],"version-history":[{"count":1,"href":"https:\/\/www.deartester.com\/index.php\/wp-json\/wp\/v2\/posts\/127\/revisions"}],"predecessor-version":[{"id":215,"href":"https:\/\/www.deartester.com\/index.php\/wp-json\/wp\/v2\/posts\/127\/revisions\/215"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.deartester.com\/index.php\/wp-json\/wp\/v2\/media\/126"}],"wp:attachment":[{"href":"https:\/\/www.deartester.com\/index.php\/wp-json\/wp\/v2\/media?parent=127"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.deartester.com\/index.php\/wp-json\/wp\/v2\/categories?post=127"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.deartester.com\/index.php\/wp-json\/wp\/v2\/tags?post=127"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}