Selenium - System.ArgumentNullException: текст не может быть нулевым Имя параметра: текст - PullRequest
0 голосов
/ 21 апреля 2019

Когда я пытаюсь запустить код, я получаю эту ошибку "System.ArgumentNullException: text не может быть нулевым. Имя параметра: text" не извлекает данные из файла Excel; Может кто-нибудь, пожалуйста, дайте мне предложение, как решить эту проблему?

вот сценарий

ExcelLib.cs

using ExcelDataReader;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;

namespace Driven
{
    public class ExcelLib
    {
        public static DataTable ExcelToDataTable(string fileName)
        {
            //open file and returns as Stream
            FileStream stream = File.Open(fileName, FileMode.Open, FileAccess.Read);
            {
                using (var reader = ExcelReaderFactory.CreateReader(stream))
                {
                    var result = reader.AsDataSet(new ExcelDataSetConfiguration()
                    {
                        ConfigureDataTable = (data) => new ExcelDataTableConfiguration()
                        {
                            UseHeaderRow = true
                        }
                    });

                    //Get all the Tables
                    DataTableCollection table = result.Tables;
                    //Store it in DataTable
                    DataTable resultTable = table["Sheet1"];

                    //return
                    return resultTable;
                }
            }
        }

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

        public static 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 - 1; row++)
            {
                for (int col = 0; col <= table.Columns.Count; col++)
                {
                    Datacollection dtTable = new Datacollection()
                    {
                        rowNumber = row,
                        colName = table.Columns[col].ColumnName,
                        colValue = table.Rows[row - 1][col].ToString()
                    };
                    //Add all the details for each row
                    dataCol.Add(dtTable);
                }
            }
        }

        public static string ReadData(int rowNumber, string columnName)
        {
            try
            {
                //Retriving Data using LINQ to reduce much of iterations
                string data = (from colData in dataCol
                               where colData.colName == columnName && colData.rowNumber == rowNumber
                               select colData.colValue).SingleOrDefault();

                //var datas = dataCol.Where(x => x.colName == columnName && x.rowNumber == rowNumber).SingleOrDefault().colValue;
                return data.ToString();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return null;
            }
        }
        public class Datacollection
        {
            public int rowNumber { get; set; }
            public string colName { get; set; }
            public string colValue { get; set; }
        }
    }
}

UnitTest1.cs

    using System;
    using Microsoft.VisualStudio.TestTools.UnitTesting;
    using OpenQA.Selenium;
    using OpenQA.Selenium.Chrome;
    using NUnit.Framework;

    namespace Driven
    {

    [TestClass]
    public class UnitTest1
        {
            [TestMethod]
            public void TestMethod1()
            {
                ExcelLib.PopulateInCollection(@"D:\Data.xlsx");

                IWebDriver driver = new ChromeDriver();
                driver.Manage().Window.Maximize();
                driver.Navigate().GoToUrl("");
                driver.FindElement(By.Id("UserName")).SendKeys(ExcelLib.ReadData(1, "getUserNamefromexcel"));
                driver.FindElement(By.Id("Password")).SendKeys(ExcelLib.ReadData(1, "getPasswordfromexcel"));
                driver.FindElement(By.Name("Action")).Click();
            }
        }
    }

Ошибка после запуска метода UnitTest1

Сообщение: Управляемый метод тестирования. UnitTest1.TestMethod1 выдал исключение: System.ArgumentNullException: текст не может быть пустым. Имя параметра: текст

Ошибка после отладки методом UnitTest1

Исключение типа 'System.ArgumentNullException' произошло в WebDriver.dll, но не было обработано в коде пользователя

1 Ответ

0 голосов
/ 22 апреля 2019

Согласно сообщению об ошибке, ExcelLib.ReadData() возвращает ноль.Нуль не приемлем для SendKeys.

Вы возвращаете null в порядке исключения.Это может быть одной из причин.

Проверьте, правильно ли заполнены данные.Затем проверьте, доступны ли данные для чтения или нет.Кроме того, напечатайте трассировку стека исключения в методе чтения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...