Selenium2.0+TestNG+Ant+Jenkins自動化測試淺嘗

當前經常使用自動化測試工具

  • Web自動化測試工具:QTP 、selenium等
  • 性能自動化測試工具:loadrunner、jmeter等
  • 接口自動化測試工具:SoapUI、postman等
  • 手機自動化測試工具:robotium、appium等

自動化腳本錄製

Selenium 1.0包括:selenium IDE、selenium Grid、selenium RC三部分。css

Selenium IDE 是嵌入到Firefox瀏覽器中的一個插件,實現簡單的瀏覽器操做的錄製與回放功能
IDE錄製的腳本能夠能夠轉換成多種語言,從而幫助咱們快速的開發腳本。chrome

錄製界面

導出腳本

 

Selenium2.0+TestNG+Ant+Jenkins自動化測試框架簡介

  • Selenium2.0 = Selenium1.0 + WebDriver
  • TestNG是一個開源自動化測試框架,靈感來源於Junit,比Junit更強大
  • ANT使用XML 文件來實現管理腳本的功能。默認的文件是build.xml
  • Jenkins持續集成,結合Ant自動化構建,定時運行,發送測試報告郵件等
  • Xslt美化Testng測試報告

環境搭建

  • 第一步 安裝JDK
  • 第二步 安裝Eclipse
  • 第三步 在Eclipse中安裝TestNG(http://beust.com/eclipse)
  • 第四步 安裝Ant(結合xslt美化測試結果,運行testng.xml,可選擇性安裝)
  • 第五步 安裝Jenkins
  • 注意:谷歌驅動版本要和谷歌版本對應
  • v2.29 v56-58
  • v2.24 v52-54

TestNG安裝

Eclipse Help ->Install New Software ,Add"http://beust.com/eclipse"apache

 

Ant安裝

  1. 官方主頁 http://ant.apache.org下載新版的ant
  2. 配置環境變量:如:PATH:%ANT_HOME%\bin
  3. 驗證ant是否成功安裝:開始->運行->cmd -> ant
  4. 若是出現以下內容,說明安裝成功:Buildfile: build.xml does not exist!

Jenkins配置

元素定位

定位方法
driver.findElement(By.id(「id的值」));
driver.findElement(By.name(「name的值」));
driver.findElement(By.linkText(「連接的所有文字」));
driver.findElement(By.partialLinkText(「連接的部分文字」));
driver.findElement(By.cssSelector(「css表達式」));
driver.findElement(By.xpath(「xpath表達式」));
driver.findElement(By.className(「class屬性」));
driver.findElement(By.tagName(「標籤名稱」));windows

 

元素經常使用操做

click();
sendkeys(String value);
clear();
getText();
getAttribute();瀏覽器

driver.get(String url) //瀏覽器跳轉
driver.manage().window().maximize(); // 瀏覽器最大化 driver.navigate().to("http://www.baidu.com"); //瀏覽器跳轉
driver.navigate().refresh(); // 刷新瀏覽器
driver.navigate().back(); // 瀏覽器後退
driver.navigate().forward(); // 瀏覽器前進
driver.quit(); // 瀏覽器退出 app

 

操做彈出框框架

Alert , Confirm,Prompt彈出框
driver.switchTo().alert().accept(); //點擊肯定
driver.switchTo().alert().dismiss(); //點擊取消
driver.switchTo().alert().sendKeys();
eclipse

操做windows彈出框
藉助autoIt工具


滾動到頂
((JavascriptExecutor)driver).executeScript("document.documentElement.scrollTop=0");
滾動到底
((JavascriptExecutor)driver).executeScript("document.documentElement.scrollTop=10000");post

 

模擬鼠標、鍵盤操做(Action類)

Actions action = new Actions(driver);
action.click(WebElement); //模擬鼠標點擊
action.contextClick(WebElement); //模擬右鍵點擊
action.doubleClick(WebElement); //模擬鼠標雙擊
action.moveToElement(WebElement); //鼠標移動到元素
actions.dragAndDrop(elementsource, elementtarget).perform();


action.sendKeys(); //模擬鍵盤輸入
action.sendKeys(Keys.ENTER).perform(); //模擬鍵盤迴車
action.sendKeys(Keys.CONTROL+"a").perform(); //使用ctrl+a全選

 

等待元素加載

強制等待
Thread.sleep();

隱式等待
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
總共等待10秒, 若是10秒後,元素還不存在,就會拋出異常  org.openqa.selenium.NoSuchElementException

顯式等待
new WebDriverWait(chrome, 15).until(
ExpectedConditions.presenceOfElementLocated(By.cssSelector("css locator"))
);    

 

處理Iframe中元素

dr.switchTo().frame("frameA"); // 進入 id 叫frameA 的 iframe
dr.switchTo().defaultContent(); // 回到主窗口

切換窗口

public void switchToWindow(String title) {
try {
String currentHandle = driver.getWindowHandle(); //返回當前的瀏覽器的窗口句柄
Set<String> handles = driver.getWindowHandles(); //返回當前的瀏覽器的全部窗口句柄
for (String handle : handles){
if(handle.equals(currentHandle)){
continue;
}else{
driver.switchTo().window(handle);
if (driver.getTitle().contains(title)){ break; }
else{ continue; }
}
}
} catch (NoSuchWindowException e) {
System.out.println("沒有找到窗口!");
}
}

 

常見異常及解決方法

NoSuchElementException:檢查頁面元素的定位表達式是否正確,或嘗試其餘定位方式;查看頁面是否加載延遲,設置等待時間;

NoSuchFrameException :檢查元素是否frame裏,是否已切換到元素的frame下,或切換回default content

ElementNotVisibleException:檢查元素是否存在不可見屬性的元素,可藉助Javascript實現元素操做;檢查是否操做速度過快,頁面沒加載出來

 

自動化測試結果的生成與美化

相關文章
相關標籤/搜索