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);
}
}
}
Bitte versuchen Sie, Ihre Erklärung zu erklären Wer, nicht nur Code – Leva7