1. 程式人生 > >Selenium2.0+TestNG+Ant+Jenkins自動化測試淺嘗

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

keys wid navigate dism key 解決 element 鼠標移動 報告

當前常用自動化測試工具

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

自動化腳本錄制

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

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

技術分享

錄制界面

技術分享

導出腳本

技術分享

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"

技術分享

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(“標簽名稱”));

元素常用操作

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(); // 瀏覽器退出

操作彈出框

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

操作windows彈出框
借助autoIt


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

模擬鼠標、鍵盤操作(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實現元素操作;檢查是否操作速度過快,頁面沒加載出來

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

技術分享

技術分享

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