Java+Selenium+TestNG自動化測試框架整合 1、簡化代碼 封裝一個定位元素的類,類型為ElementLocation package com.test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriv ...
Java+Selenium+TestNG自動化測試框架整合
1、簡化代碼
封裝一個定位元素的類,類型為ElementLocation
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(); } }
2、整合TestNG測試框架
1、Java整合TestNG這裡用的jar包,先下載一個jar包;
2、將jar包導入工程裡面(這裡導入的是IDEA)
整合部分以登錄為例:
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(); } } }
註:
1、提供調用定位元素的方法,還是有些複雜,在後面繼續用的時候再進行優化。
2、整合TestNG
1、選用jar包比較方便,現在很多都不用jar包文件直接整合maven中,後面繼續優化。
2、TestNG提供了很多註解,目前只用了三個。
@BeforeMethod:在運行其他方法之前運行該方法,僅運行一次
@AfterMethod:在運行完其他方法之後運行該方法,僅運行一次
@Test:運行當前方法