1. 程式人生 > >Java+Selenium3框架設計準備篇4-TestNG實現DDT(2)

Java+Selenium3框架設計準備篇4-TestNG實現DDT(2)

本篇繼續介紹用TestNG和excel檔案實現DDT場景。我們需要準備一個test-data.xlsx檔案,並且放到eclipse專案下。

1.準備test-data.xlsx檔案

2.利用POI讀取excel檔案內容,並儲存到一個二維陣列中。

package demo;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.openqa.selenium.By;  
import org.openqa.selenium.WebDriver;  
import org.openqa.selenium.chrome.ChromeDriver;  
import org.testng.annotations.DataProvider;  
import org.testng.annotations.Test;  
  
public class DDT2 {  
      
    @Test(dataProvider="testdata")  
    public void TestLogin(String username, String password) throws InterruptedException{  
  
        System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");  
        WebDriver driver = new ChromeDriver();  
        driver.manage().window().maximize();  
        driver.get("https://www.baidu.com");  
          
        // click login link  
        driver.findElement(By.xpath("//*[@id='u1']/a[7]")).click();  
        Thread.sleep(2000);  
          
        driver.findElement(By.xpath("//*[@id='TANGRAM__PSP_8__userName']")).clear();  
        driver.findElement(By.xpath("//*[@id='TANGRAM__PSP_8__userName']")).sendKeys(username);  
        driver.findElement(By.xpath("//*[@id='TANGRAM__PSP_8__password']")).clear();  
        driver.findElement(By.xpath("//*[@id='TANGRAM__PSP_8__password']")).sendKeys(password);  
          
    }  
      
    @DataProvider(name="testdata") 
    public Object[][] TestDataFeed() throws Exception{
   
        File src = new File(".\\Files\\test-data.xlsx");  
        FileInputStream fis = new FileInputStream(src);  
           
        @SuppressWarnings("resource")  
        XSSFWorkbook wb=new XSSFWorkbook(fis);    
        XSSFSheet sh1= wb.getSheetAt(0);  
    	int numberrow = sh1.getPhysicalNumberOfRows();
    		
    	Object [][] baidudata=new Object[numberrow][2];
    	
    	for(int i=0;i<numberrow;i++){  
            
            	baidudata[i][0] = sh1.getRow(i).getCell(0).getStringCellValue();
            	baidudata[i][1] = sh1.getRow(i).getCell(1).getStringCellValue();
            }
    	
    	return baidudata;
    	
    }
    
}
執行指令碼,發現啟動了兩次chrome瀏覽器,並可以看到測試了兩次登入,分別用了不同使用者名稱。

相關推薦

Java+Selenium3框架設計準備4-TestNG實現DDT2

本篇繼續介紹用TestNG和excel檔案實現DDT場景。我們需要準備一個test-data.xlsx檔案,並且放到eclipse專案下。 1.準備test-data.xlsx檔案 2.利用POI讀取excel檔案內容,並儲存到一個二維陣列中。 package demo;

Java+Selenium3框架設計準備1-TestNG簡單介紹

       前面文章我們執行測試用例都是在main方法下,有沒有什麼方法不需要用main方法去執行用例,這就需要單元測試框架的支援,這篇簡單介紹TestNG單元測試框架的安裝和基本使用。 1.什麼是

Java+Selenium3框架設計準備7-TestNG如何disable一些case

       本文繼續學習TestNG的知識,有些時候,我們在寫指令碼的時候暫時不讓一些測試用例執行,怎麼辦呢?有兩種方法,程式碼登出這個用例區域,第二個是去除前面@Test註釋,這樣testNG執行

Java+Selenium3框架設計準備12-純JAVA方法實現日誌輸出

       前面一篇介紹如何通過開源jar包Log4j.jar實現日誌檔案輸出,Log4j確實很強大,能生成三種日誌檔案,一種是儲存到磁碟的日誌檔案,一種是控制檯輸出的日誌,還有一種是HTML格式的日誌檔案。有時候,我們不一定都需要這些檔案,在我們自動化測試框架裡,我們只

Java+Selenium3框架設計準備8-POM簡介

       頁面物件模型(Page Object Model)在Selenium Webdriver自動化測試中使用非常流行和受歡迎,作為自動化測試工程師應該至少聽說過POM這個概念。本篇介紹POM

Java+Selenium3框架設計5-如何實現郵件傳送測試報告

       本篇繼續回答網友的問題,這個主題是如何通過郵件傳送測試報告。通過郵件傳送測試報告,這個很重要,也很有必要。不管你使用什麼自動化測試框架,都建議添加發送測試報告的功能。先來設計我們的傳送郵件的場景:假如我們測試報告是固定的名稱,放在固定的路徑下。 1.下載jav

Java+Selenium3框架設計1-跨瀏覽器支援

          本篇開始介紹Java+Selenium+POM的簡單自動化測試框架設計。第一個設計點,就是支援跨瀏覽器測試。從我個人角度來說,跨瀏覽器測試就是:同一個測試用例,支援用不同瀏覽器去執行。我們這裡只考慮winodws平臺的瀏覽器,而且只關注火狐和谷歌瀏覽器的

Java+Selenium3框架設計6-如何解決多條類下用例執行只啟動一次瀏覽器的問題

       前面我們實現了在setUp方法中新增登入的用例。今天,還是為了解決我們遺留的問題,如果執行多條測試用例,這些用例在不同類檔案下,我們只需要啟動一次瀏覽器,登入一次,然後根據順序去執行多個

智慧樓宇 4 —— 室內定位技術

iBeacon室內定位技術 1 iBeacon介紹 iBeacon是蘋果在2013年WWDC上推出一項基於藍芽4.0(Bluetooth LE | BLE | Bluetooth Smart)的精準微定位技術,當你的手持裝置靠近一個Beacon基站時,裝置就能夠感應到Bea

了解java虛擬機—JVM相關參數設置2

打印 upload mda 數值 選擇 ssl 使用情況 src pat 1. JVM相關參數設置JVM相關配置-XX:+PrintGC兩次次YoungGC,兩次FullGC。-XX:+PrintGCDetails打印GC時的內存,並且在程序結束時打印堆內存使用情況-X

FPGA設計千兆以太網MAC2——以太網協議及設計規劃

官方文檔 系統 指定 wid d+ 大於等於 在線 導致 span   上篇該系列博文中通過MDIO接口實現了PHY芯片的狀態檢測,驗證其已處於1000M 全雙工工作模式。在設計MAC邏輯之前,要先清楚MAC與PHY之間的接口以及以太網協議細節,這樣才能保證網絡的兼容性。本

4.2Python資料型別2之布林型別

返回總目錄 目錄: 1.布林型別的概念和分類: 2.布林型別的本質 3.布林型別的應用 (一)布林型別的概念和分類: (1)概念: 布林型別(bool)就是用於判斷真假的資料型別 (2)分類: Python裡只有兩種布林型別:True 與 False (

OpenCV 2.4.9 學習筆記2—— OpenCV記憶體自動管理

  1、OpenCV函式中輸出影象的記憶體分配是自動完成的(如果不特別指定的話)。   2、使用OpenCV的C++介面時不需要考慮記憶體釋放問題。   3、賦值運算子和拷貝建構函式( ctor )只拷貝資訊頭。 上述部分內容參考了OpenCV的中文教程。(http://www.opencv

SSH:利用Struts2+Hibernate4+Spring4+SQLServer框架,搭建一個前後端web網站2

百度編輯器編輯文章 利用百度編輯器實現文章的編寫,實現效果如下: 可以看到利用百度編輯可以很好的實現文字的排版效果,同時還可以多圖上傳以及新增錨點和上傳視屏。 配置的一些關鍵點: 當從

Mysql千萬資料級分表設計實現方案2附一致性雜湊原理解析

首先,接著上篇博文:Mysql千萬資料級分表設計及實現方案已經分析了自增id作分表key和全域性服務id(16位)作分表key進行分表的兩種設計方案。自增id優勢在於簡單,直接雜湊取模即可分表完成。根據

JAVA:IO流 之 節點流與處理流2

1. 流的分類 按資料流的方向不同:輸入流,輸出流。 按處理資料單位不同:位元組流,字元流。 (1) 位元組流:資料流中最小的資料單元是位元組。 (2)字元流:資料流中最小的資料單元是字元, Java中的字元是Unicode編碼,一個字元佔用兩個位元組。

介面自動化測試TestNG 基本語法和TestNG工程建立 2

1.常用引數註解: 描述 @BeforeSuite 註解的方法將只執行一次,執行所有測試前此套件中。 @AfterSuite 註解的方法將只執行一次此套件中的所有測試都執行之後。

java內存區域與內存溢出異常2

當前 卸載 最大的 編譯 內存溢出 tac memory java語言 垃圾收集 3.本地方法棧 本地方法棧與虛擬機棧作用相同,不同的是虛擬機棧為java方法服務,本地方法棧為native方法服務,本地方法棧會拋出StackOverFlowError和OutOfMemor

學習筆記:深入理解Java虛擬機 第二章:Java內存區域與內存溢出異常2

保留 頻繁 深入 一是 init方法 對象的引用 整理 緩沖 出現 學習筆記:深入理解Java虛擬機 第二章:Java內存區域與內存溢出異常(2) 三、HotSpot虛擬機對象探秘 1.對象的創建 ? 在Java程序運行過程中時刻都有對象被創建。在語言層面上,創建對象(例如

Java語言程序設計 基礎 編程練習題 12.7

練習題 frame add pack ++ set ase mage awt 1 package test.com; 2 3 import java.awt.GridLayout; 4 5 import javax.swing.*; 6 /* 7