2016-05-26 5 views
0

Ich habe mehrere Selenium-Tests in C# zum Testen einer Login-Seite erstellt. Jeder Test verwendet ein anderes Paar von Anmeldeinformationen, die aus derselben Excel-Tabelle stammen. Ich habe viel Code im Internet gefunden, weil ich die Excel-Tabelle lesen und die Daten in einer bestimmten Zeile zur Verwendung finden konnte. Das Problem, auf das ich stoße, ist, dass die Tests nur isoliert ausgeführt werden und nicht, wenn sie in einer Serie ausgeführt werden. Im letzteren Fall ist nur die erste erfolgreich, während alle nachfolgenden Tests mit der Ausnahme "Text kann nicht ungültig sein" fehlschlagen. Ich bin misstrauisch, dass es etwas damit zu tun hat, dass Excel zwischen den einzelnen Tests nicht ordnungsgemäß entsorgt wird. Irgendwelche Ideen, wie ich die Excel-Sachen ordentlich aufräumen kann? HierVermutliche Probleme bei der Entsorgung von Excel-Objekten, die dazu führen, dass nachfolgende Selen-Tests fehlschlagen?

ist der Code, wo ich das Excel-Objekt instanziiert:

string path1 =  Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase,  @"SeleniumData\LoginBook.xlsx"); 
ExcelLib loginBook = new ExcelLib(path1); 

Hier ist, wo ich die Arbeitsmappe rufen:

rmMain_PageObject pageRMMain = new  rmLogin_PageObject().Login(loginBook.ReadData(1, "UserName"),  (loginBook.ReadData(1, "Password"))); 

Hier ist die Methode selbst:

 using Excel; 
using System; 
using System.Collections.Generic; 
using System.Data; 
using System.IO; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace AutoTestProject1 
{ 
    public class ExcelLib 
    { 
     private DataTable ExcelToDataTable(string fileName) 
     { 
      //open file and returns as Stream 
      FileStream stream = File.Open(fileName, FileMode.Open, FileAccess.Read); 
      //Createopenxmlreader via ExcelReaderFactory 
      IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); //.xlsx 
      //Set the First Row as Column Name 
      excelReader.IsFirstRowAsColumnNames = true; 
      //Return as DataSet 
      DataSet result = excelReader.AsDataSet(); 
      //Get all the Tables 
      DataTableCollection table = result.Tables; 
      //Store it in DataTable 
      DataTable resultTable = table["Sheet1"]; 

      //return 
      return resultTable; 
     } 

     public ExcelLib(string fileName) 
     { 
      PopulateInCollection(fileName); 
     } 
     public class Datacollection 
     { 
      public int rowNumber { get; set; } 
      public int colNumber { get; set; }        //test 
      public string colName { get; set; } 
      public string colValue { get; set; } 
     } 

     static List<Datacollection> dataCol = new List<Datacollection>(); 

     private void PopulateInCollection(string fileName) 
     { 
      DataTable table = ExcelToDataTable(fileName); 

      //Iterate through the rows and columns of the Table 
      for (int row = 1; row <= table.Rows.Count; row++) 
      { 
       //for (int col = 0; col <= table.Columns.Count; col++) 
       for (int col = 0; col < table.Columns.Count; col++) 
       { 
        Datacollection dtTable = new Datacollection() 
        { 
         rowNumber = row, 
         colNumber = col,          //test 
         colName = table.Columns[col].ColumnName, 
         colValue = table.Rows[row - 1][col].ToString() 
        }; 
        //Add all the details for each row 
        dataCol.Add(dtTable); 
       } 
      } 
     } 

Antwort

-1
var excelObject = new ExcelObject //what ever excel assy you are using 
try{ 
} 
catch(Exception e){ 
} 
finally{ 
    excelObject.Dispose(); 
} 
+1

Bitte versuchen Sie, Ihre Erklärung zu erklären Wer, nicht nur Code – Leva7

Verwandte Themen