{"id":200,"date":"2017-05-09T10:21:19","date_gmt":"2017-05-09T02:21:19","guid":{"rendered":"http:\/\/www.jsjs.org\/?p=200"},"modified":"2017-05-09T10:21:19","modified_gmt":"2017-05-09T02:21:19","slug":"testngmaven-jenkins%e8%bf%9b%e8%a1%8cselenium%e8%87%aa%e5%8a%a8%e5%8c%96%e9%9b%86%e6%88%90","status":"publish","type":"post","link":"https:\/\/blog.jsjs.org\/?p=200","title":{"rendered":"testNg+maven +jenkins\u8fdb\u884cselenium\u81ea\u52a8\u5316\u96c6\u6210"},"content":{"rendered":"<p>\u4e0a\u4e00\u6b21\u641e\u5b9a\u4e86<a href=\"http:\/\/blog.csdn.net\/qq744746842\/article\/details\/48473373\">appium+python+jenkins\u7684\u81ea\u52a8\u5316\u96c6\u6210<\/a>\uff0c\u4f46\u662f\u611f\u89c9\u5bf9\u4e8ejenkins\u7684\u96c6\u6210\u8fd8\u662f\u6709\u5f88\u591a\u4e0d\u592a\u7406\u89e3\u7684\u5730\u65b9\uff0c\u6240\u4ee5\u4eca\u5929\u62bd\u7a7a\u7814\u7a76\u4e86\u4e0b\u4f7f\u7528testNg+maven+selenium+jenkins\u7684\u81ea\u52a8\u5316\u96c6\u6210\u3002<\/p>\n<h4 id=\"\u6b63\u6587\">\u6b63\u6587<\/h4>\n<hr \/>\n<p>\u51c6\u5907\u73af\u5883<\/p>\n<ol>\n<li>\u9996\u5148\u6211\u4eec\u65b0\u5efa\u4e00\u4e2amaven\u7684\u5de5\u7a0b\uff0c\u5e76\u4e14\u5728pom.xml\u4e2d\u914d\u7f6e\u597d\u6211\u4eec\u4f9d\u8d56\u7684\u4e00\u4e9bjar\u5305<\/li>\n<\/ol>\n<pre class=\"prettyprint\"><code class=\"hljs xml has-numbering\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-title\">dependencies<\/span>&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-title\">dependency<\/span>&gt;<\/span>\n            <span class=\"hljs-tag\">&lt;<span class=\"hljs-title\">groupId<\/span>&gt;<\/span>org.seleniumhq.selenium<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-title\">groupId<\/span>&gt;<\/span>\n            <span class=\"hljs-tag\">&lt;<span class=\"hljs-title\">artifactId<\/span>&gt;<\/span>selenium-java<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-title\">artifactId<\/span>&gt;<\/span>\n            <span class=\"hljs-tag\">&lt;<span class=\"hljs-title\">version<\/span>&gt;<\/span>2.46.0<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-title\">version<\/span>&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-title\">dependency<\/span>&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-title\">dependency<\/span>&gt;<\/span>\n            <span class=\"hljs-tag\">&lt;<span class=\"hljs-title\">groupId<\/span>&gt;<\/span>org.testng<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-title\">groupId<\/span>&gt;<\/span>\n            <span class=\"hljs-tag\">&lt;<span class=\"hljs-title\">artifactId<\/span>&gt;<\/span>testng<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-title\">artifactId<\/span>&gt;<\/span>\n            <span class=\"hljs-tag\">&lt;<span class=\"hljs-title\">version<\/span>&gt;<\/span>6.9.6<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-title\">version<\/span>&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-title\">dependency<\/span>&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-title\">dependency<\/span>&gt;<\/span>\n            <span class=\"hljs-tag\">&lt;<span class=\"hljs-title\">groupId<\/span>&gt;<\/span>org.seleniumhq.selenium<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-title\">groupId<\/span>&gt;<\/span>\n            <span class=\"hljs-tag\">&lt;<span class=\"hljs-title\">artifactId<\/span>&gt;<\/span>selenium-api<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-title\">artifactId<\/span>&gt;<\/span>\n            <span class=\"hljs-tag\">&lt;<span class=\"hljs-title\">version<\/span>&gt;<\/span>2.46.0<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-title\">version<\/span>&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-title\">dependency<\/span>&gt;<\/span>\n\n\n    <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-title\">dependencies<\/span>&gt;<\/span><\/code><\/pre>\n<ul class=\"pre-numbering\">\n<li>1<\/li>\n<li>2<\/li>\n<li>3<\/li>\n<li>4<\/li>\n<li>5<\/li>\n<li>6<\/li>\n<li>7<\/li>\n<li>8<\/li>\n<li>9<\/li>\n<li>10<\/li>\n<li>11<\/li>\n<li>12<\/li>\n<li>13<\/li>\n<li>14<\/li>\n<li>15<\/li>\n<li>16<\/li>\n<li>17<\/li>\n<li>18<\/li>\n<li>19<\/li>\n<\/ul>\n<ol>\n<li>\u7f16\u5199\u6211\u4eecselenium\u811a\u672c<\/li>\n<\/ol>\n<pre class=\"prettyprint\"><code class=\"language-JAVA hljs java has-numbering\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">NewTest<\/span> {<\/span>\n\n    <span class=\"hljs-keyword\">private<\/span> WebDriver driver;\n\n\n\n    <span class=\"hljs-annotation\">@BeforeTest<\/span>\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">beforeTest<\/span>(){\n        driver = <span class=\"hljs-keyword\">new<\/span> FirefoxDriver();\n        driver.manage().timeouts().pageLoadTimeout(<span class=\"hljs-number\">10<\/span>, TimeUnit.SECONDS);\n        driver.manage().window().maximize();\n        driver.get(<span class=\"hljs-string\">\"http:\/\/www.baidu.com\"<\/span>);\n    }\n\n    <span class=\"hljs-annotation\">@AfterTest<\/span>\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">afterTest<\/span>(){\n        driver.quit();\n    }\n\n    <span class=\"hljs-annotation\">@Test<\/span>\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">f<\/span>()\n    {\n        System.out.println(<span class=\"hljs-string\">\"heloo\"<\/span>);\n        By inputBox = By.id(<span class=\"hljs-string\">\"kw\"<\/span>);\n        By searchButton = By.id(<span class=\"hljs-string\">\"su\"<\/span>);\n\n        <span class=\"hljs-comment\">\/\/\u667a\u80fd\u7b49\u5f85\u5143\u7d20\u52a0\u8f7d\u51fa\u6765<\/span>\n        intelligentWait(driver, <span class=\"hljs-number\">10<\/span>, inputBox);\n        <span class=\"hljs-comment\">\/\/\u667a\u80fd\u7b49\u5f85\u5143\u7d20\u52a0\u8f7d\u51fa\u6765<\/span>\n        intelligentWait(driver, <span class=\"hljs-number\">10<\/span>, searchButton);\n        driver.findElement(inputBox).sendKeys(<span class=\"hljs-string\">\"\u4e2d\u56fd\"<\/span>);\n        driver.findElement(searchButton).click();\n\n    }\n\n\n    <span class=\"hljs-javadoc\">\/**\u8fd9\u662f\u667a\u80fd\u7b49\u5f85\u5143\u7d20\u52a0\u8f7d\u7684\u65b9\u6cd5*\/<\/span>\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">intelligentWait<\/span>(WebDriver driver,<span class=\"hljs-keyword\">int<\/span> timeOut, <span class=\"hljs-keyword\">final<\/span> By by) {\n        <span class=\"hljs-keyword\">try<\/span> {\n            (<span class=\"hljs-keyword\">new<\/span> WebDriverWait(driver, timeOut)).until(<span class=\"hljs-keyword\">new<\/span> ExpectedCondition&lt;Boolean&gt;() {\n                <span class=\"hljs-keyword\">public<\/span> Boolean <span class=\"hljs-title\">apply<\/span>(WebDriver driver) {\n                    WebElement element = driver.findElement(by);\n                    <span class=\"hljs-keyword\">return<\/span> element.isDisplayed();\n                }\n            });\n\n\n        } <span class=\"hljs-keyword\">catch<\/span> (TimeoutException e) {\n        Assert.fail(<span class=\"hljs-string\">\"\u8d85\u65f6L !! \"<\/span> + timeOut + <span class=\"hljs-string\">\" \u79d2\u4e4b\u540e\u8fd8\u6ca1\u627e\u5230\u5143\u7d20 [\"<\/span> + by + <span class=\"hljs-string\">\"]\"<\/span>, e);\n        }\n    }\n}<\/code><\/pre>\n<ul class=\"pre-numbering\">\n<li>1<\/li>\n<li>2<\/li>\n<li>3<\/li>\n<li>4<\/li>\n<li>5<\/li>\n<li>6<\/li>\n<li>7<\/li>\n<li>8<\/li>\n<li>9<\/li>\n<li>10<\/li>\n<li>11<\/li>\n<li>12<\/li>\n<li>13<\/li>\n<li>14<\/li>\n<li>15<\/li>\n<li>16<\/li>\n<li>17<\/li>\n<li>18<\/li>\n<li>19<\/li>\n<li>20<\/li>\n<li>21<\/li>\n<li>22<\/li>\n<li>23<\/li>\n<li>24<\/li>\n<li>25<\/li>\n<li>26<\/li>\n<li>27<\/li>\n<li>28<\/li>\n<li>29<\/li>\n<li>30<\/li>\n<li>31<\/li>\n<li>32<\/li>\n<li>33<\/li>\n<li>34<\/li>\n<li>35<\/li>\n<li>36<\/li>\n<li>37<\/li>\n<li>38<\/li>\n<li>39<\/li>\n<li>40<\/li>\n<li>41<\/li>\n<li>42<\/li>\n<li>43<\/li>\n<li>44<\/li>\n<li>45<\/li>\n<li>46<\/li>\n<li>47<\/li>\n<li>48<\/li>\n<li>49<\/li>\n<li>50<\/li>\n<li>51<\/li>\n<li>52<\/li>\n<\/ul>\n<ol>\n<li>\u518d\u6765\u8fd8\u8981\u914d\u7f6e\u4e0b\u6211\u4eec\u7684testng.xml\u6587\u4ef6<\/li>\n<\/ol>\n<pre class=\"prettyprint\"><code class=\"hljs xml has-numbering\"><span class=\"hljs-pi\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;<\/span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-title\">suite<\/span> <span class=\"hljs-attribute\">name<\/span>=<span class=\"hljs-value\">\"Suite\"<\/span> <span class=\"hljs-attribute\">parallel<\/span>=<span class=\"hljs-value\">\"false\"<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-title\">test<\/span> <span class=\"hljs-attribute\">name<\/span>=<span class=\"hljs-value\">\"Test\"<\/span>&gt;<\/span>\n\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-title\">classes<\/span>&gt;<\/span>\n            <span class=\"hljs-tag\">&lt;<span class=\"hljs-title\">class<\/span> <span class=\"hljs-attribute\">name<\/span>=<span class=\"hljs-value\">\"com.saii.NewTest\"<\/span>&gt;<\/span>\n                <span class=\"hljs-tag\">&lt;<span class=\"hljs-title\">methods<\/span>&gt;<\/span>\n                    <span class=\"hljs-tag\">&lt;<span class=\"hljs-title\">include<\/span> <span class=\"hljs-attribute\">name<\/span>=<span class=\"hljs-value\">\"f\"<\/span> \/&gt;<\/span>\n                <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-title\">methods<\/span>&gt;<\/span>\n            <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-title\">class<\/span>&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-title\">classes<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-title\">test<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-title\">suite<\/span>&gt;<\/span><\/code><\/pre>\n<ul class=\"pre-numbering\">\n<li>1<\/li>\n<li>2<\/li>\n<li>3<\/li>\n<li>4<\/li>\n<li>5<\/li>\n<li>6<\/li>\n<li>7<\/li>\n<li>8<\/li>\n<li>9<\/li>\n<li>10<\/li>\n<li>11<\/li>\n<li>12<\/li>\n<li>13<\/li>\n<\/ul>\n<ol>\n<li>\u5de5\u7a0b\u914d\u7f6e\u5df2\u7ecf\u7ed3\u675f\u4e86\uff0c\u6211\u4eec\u6765\u8fdb\u884cjenkins\u7684\u4e00\u4e9b\u914d\u7f6e\u5427\u3002\u8fdb\u5165jenkins\u7684\u7cfb\u7edf\u914d\u7f6e<br \/>\n\u914d\u7f6e\u5168\u5c40\u5c5e\u6027\u7684\u952e\u503c\u5bf9<br \/>\n<img decoding=\"async\" title=\"\" src=\"http:\/\/img.blog.csdn.net\/20150916225548246\" alt=\"\u5168\u5c40\u5c5e\u6027\" \/><br \/>\n\u8fd9\u4e2a\u5730\u65b9\u4e00\u5b9a\u8981\u914d\u7f6e\uff0c\u56e0\u4e3a\u5982\u679c\u4e0d\u914d\u7f6e\u6210utf-8\u7684\u8bdd\uff0cjenkins\u4ecegit\u4e0a\u62c9\u4e0b\u6765\u7684\u6587\u4ef6\u7f16\u7801\u683c\u5f0f\u4e0d\u662futf-8\u7684\u683c\u5f0f\uff0c\u8fd9\u6837\u5b50\u5c31\u4f1a\u5bfc\u81f4\u6587\u4ef6\u4e2d\u7684\u4e00\u4e9b\u4e2d\u6587\u76f4\u63a5\u53d8\u6210\u4e86\u4e71\u7801\uff0c\u5230\u65f6\u5019\u76f4\u63a5\u5f71\u54cd\u5230\u811a\u672c\u7684\u8fd0\u884c<br \/>\n\u8fdb\u884cmaven\u7684\u9879\u76ee\u914d\u7f6e<br \/>\n<img decoding=\"async\" title=\"\" src=\"http:\/\/img.blog.csdn.net\/20150916231008645\" alt=\"\u8fd9\u91cc\u5199\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\u8fd9\u91cc\u662f\u914d\u7f6emaven\u7684\u7f16\u7801\u4ee5\u53ca\u9632\u6b62oom\u8fd8\u6709\u662fmaven\u7684\u672c\u5730\u4ed3\u5e93\u4ee5\u53camaven\u7684\u5b89\u88c5\u5730\u5740<\/li>\n<li>\u65b0\u5efa\u4e00\u4e2aprojce\u540e\uff0c\u5728\u6784\u5efa\u4e2d\u65b0\u5efa\u4e00\u4e2a\u6784\u5efa\u6b65\u9aa4 invoke-top-level Maven targets<br \/>\n<img decoding=\"async\" title=\"\" src=\"http:\/\/img.blog.csdn.net\/20150916232526862\" alt=\"\u8fd9\u91cc\u5199\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\u8fd9\u91cc\u53ea\u9700\u8981\u914d\u7f6e\u6b63\u786epom\u5c31\u53ef\u4ee5\u4e86\u3002<\/li>\n<li>\u8fd0\u884c\u7ed3\u679c<br \/>\n<img decoding=\"async\" title=\"\" src=\"http:\/\/img.blog.csdn.net\/20150916232733842\" alt=\"\u8fd9\u91cc\u5199\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<p>OK \u8fd0\u884c\u6210\u529f<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>\u4e0a\u4e00\u6b21\u641e\u5b9a\u4e86appium+python+jenkins\u7684\u81ea\u52a8\u5316\u96c6\u6210\uff0c\u4f46\u662f\u611f\u89c9\u5bf9\u4e8ejenkins\u7684\u96c6\u6210\u8fd8\u662f\u6709\u5f88\u591a\u4e0d\u592a\u7406\u89e3\u7684\u5730\u65b9\uff0c\u6240\u4ee5\u4eca\u5929\u62bd\u7a7a\u7814\u7a76\u4e86\u4e0b\u4f7f\u7528testNg+maven+selenium+jenkins\u7684\u81ea\u52a8\u5316\u96c6\u6210\u3002 \u6b63\u6587 \u51c6\u5907\u73af\u5883 \u9996\u5148\u6211\u4eec\u65b0\u5efa\u4e00\u4e2amaven\u7684\u5de5\u7a0b\uff0c\u5e76\u4e14\u5728pom.xml\u4e2d\u914d\u7f6e\u597d\u6211\u4eec\u4f9d\u8d56\u7684\u4e00\u4e9bjar\u5305 &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;org.seleniumhq.selenium&lt;\/groupId&gt; &lt;artifactId&gt;selenium-java&lt;\/artifactId&gt; &lt;version&gt;2.46.0&lt;\/version&gt; &lt;\/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.testng&lt;\/groupId&gt; &lt;artifactId&gt;testng&lt;\/artifactId&gt; &lt;version&gt;6.9.6&lt;\/version&gt; &lt;\/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.seleniumhq.selenium&lt;\/groupId&gt; &lt;artifactId&gt;selenium-api&lt;\/artifactId&gt; &lt;version&gt;2.46.0&lt;\/version&gt; &lt;\/dependency&gt; [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-200","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=\/wp\/v2\/posts\/200","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=200"}],"version-history":[{"count":0,"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=\/wp\/v2\/posts\/200\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=200"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=200"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=200"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}