Java+Selenium+TestNG自動化測試框架整合css
一、簡化代碼java
封裝一個定位元素的類,類型爲ElementLocation web
package com.test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import java.util.concurrent.TimeUnit; /** * 每次定位元素都調用相同的方法 * 將每一個方法都封裝起來僅供調用 */ public class ElementLocation { /** * 經過id定位元素 * @param id * @param elementId */ public void finElementByID(String id, String elementId, WebDriver driver){ driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); driver.findElement(By.ById.id(id)).sendKeys(elementId); } /** * 經過xpath定位元素 * @param xpath * @param text */ public void findElementByXpath(String xpath,String text,WebDriver driver){ driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); driver.findElement(By.ByXPath.xpath(xpath)).sendKeys(text); }
/** * 先清除文本框內容再經過ID定位元素 * @param id * @param text * @param text */ public void findElementByIdClearSendkeys(String id,String text,WebDriver driver){ driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); driver.findElement(By.ById.id(id)).clear(); driver.findElement(By.ById.id(id)).sendKeys(text); } /** * 先清除文本框內容再經過xpath定位元素 * @param xpath * @param text */ public void findElementByXpathClearSendkeys(String xpath,String text,WebDriver driver){ driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); driver.findElement(By.ByXPath.xpath(xpath)).clear(); driver.findElement(By.ByXPath.xpath(xpath)).sendKeys(text); } /** * 先清除文本框內容再經過cssSelector定位元素 * @param cssSelector * @param text */ public void findElementByCssClearSendkeys(String cssSelector,String text,WebDriver driver){ driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); driver.findElement(By.ByCssSelector.cssSelector(cssSelector)).clear(); driver.findElement(By.ByCssSelector.cssSelector(cssSelector)).sendKeys(text); } /** * cssSelector點擊事件 * @param cssSelector */ public void findElementByCssClick(String cssSelector,WebDriver driver){ driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); driver.findElement(By.ByCssSelector.cssSelector(cssSelector)).click(); } /** * xpath點擊事件 * @param xpath */ public void findElementByXpathClick(String xpath,WebDriver driver){ driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); driver.findElement(By.ByXPath.xpath(xpath)).click(); } }
二、整合TestNG測試框架chrome
一、Java整合TestNG這裏用的jar包,先下載一個jar包;框架
二、將jar包導入工程裏面(這裏導入的是IDEA)maven
整合部分以登陸爲例:測試
package com.test; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.support.ui.WebDriverWait; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; public class Login { WebDriver driver = null; //調用上面定位元素的類 ElementLocation elementLocation = new ElementLocation(); //在全部方法運行以前運行 @BeforeMethod public void before(){ System.setProperty("webdriver.chrome.driver", "E:\\selenium\\chromedriver.exe"); driver = new ChromeDriver(); String url = ""; driver.manage().window().maximize(); driver.get(url); } /** * 定位登陸界面元素 * 1.輸入正確手機號碼 * 2.輸入正確密碼 * 3.登陸成功 */ @Test public void test_login1(){ elementLocation.findElementByCssClearSendkeys("input[type='text']","11115232323",driver); elementLocation.findElementByCssClearSendkeys("input[type='password']","111111",driver); elementLocation.findElementByCssClick("button[type='button']",driver); System.out.println("登陸成功,跳轉到首頁"); }//在全部方法運行完以後運行 @AfterMethod public void after(){ try{ Thread thread = new Thread(); thread.sleep(5000);
driver.quit(); }catch (InterruptedException e){ e.printStackTrace(); } } }
注:優化
一、提供調用定位元素的方法,仍是有些複雜,在後面繼續用的時候再進行優化。ui
二、整合TestNG url
一、選用jar包比較方便,如今不少都不用jar包文件直接整合maven中,後面繼續優化。 二、TestNG提供了不少註解,目前只用了三個。 @BeforeMethod:在運行其餘方法以前運行該方法,僅運行一次 @AfterMethod:在運行完其餘方法以後運行該方法,僅運行一次 @Test:運行當前方法