Чтение данных из электронной таблицы Excel с помощью цикла for. Не удается получить второе значение в столбце

#c# #visual-studio #selenium-webdriver

#c# #visual-studio #selenium-webdriver

Вопрос:

Я не могу получить второе значение из электронной таблицы Excel для вставки в поле пароля, кажется, что мой цикл for неверен. Пароль должен быть вставлен с листа Excel в поле. Может кто-нибудь, пожалуйста, дать мне решение по этому вопросу?

         //My code
        using OfficeOpenXml;
        using OpenQA.Selenium;
        using OpenQA.Selenium.Chrome;
        using OpenQA.Selenium.Interactions;
        using System;
        using System.IO;
        
        namespace LoginSuperUser_New
        {
            public class LoginSuperuser
            {
                static void Main (String[] args)
                { 
                    //Open Chrome Driver
                    IWebDriver driver = new ChromeDriver(@"C:Users27828sourcerepos");
                    ExcelPackage.LicenseContext = LicenseContext.Commercial;
                    FileInfo existingFile = new FileInfo(@"C:DATAUserLoginData.xlsx");
                    using (ExcelPackage package = new ExcelPackage(existingFile))
                    {
                        //get the first worksheet in the workbook
                        ExcelWorksheet worksheet = package.Workbook.Worksheets[0];
                        int colCount = worksheet.Dimension.End.Column;  //get Column Count
                        int rowCount = worksheet.Dimension.End.Row;     //get row count
                        int row = 2;
                        int col = 1;
        
                        //Open Environment
                        object cellValue = worksheet.Cells[row, col].Text;
                        driver.Navigate().GoToUrl((string)cellValue);
                        driver.Manage().Window.Maximize();
                        driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
        
                        for (col = 2; col <= colCount; col  )
                        {
                            for (row = 2; row <= rowCount; row  )
                            {
        
                                //Enter the Username
                                IWebElement UserName = driver.FindElement(By.Id("Input_Email"));
                                object UserN = worksheet.Cells[row, col].Text;
                                UserName.SendKeys((string)UserN);
                                                       
                                col = col   1;
//This code cannot get the second value from the excel spreadsheet
                                //Enter the Password
                                IWebElement PassWOrd = driver.FindElement(By.Id("Input_Password"));
                                object PasSWord = worksheet.Cells[row, col].Text;
                                PassWOrd.SendKeys((string)PasSWord);
                                
                                
                    }
                     
                }
                
            }
        }
  

Комментарии:

1. Трудно понять, что не работает, однако строка … col = col 1; … выглядит очень подозрительно. Оно будет отображаться для каждой строки, col увеличивается на 1, это приведет к путанице во внешнем for цикле, где его индекс col

2. Да, я заметил. Проблема в том, что при отладке кода он вводит имя пользователя и снова вводит имя пользователя в пароле, он не переходит к следующему столбцу пароля, чтобы получить правильные данные. У меня есть, например, 3 столбца и 5 строк с одинаковым URL-адресом и разными именами пользователей и паролями.

3. Где-то между этим кодом должен быть код, который принудительно вводит его в столбец Password для ввода в поле Password .

4. Имя пользователя IWebElement = драйвер. findElement(By.Id («Input_Email»)); пользователь объекта = рабочий лист. Ячейки [строка, столбец]. Текст; Имя пользователя. SendKeys((string)UserN); //Введите пароль IWebElement PassWOrd = driver. findElement(By.Id («Input_Password»)); пароль объекта = рабочий лист. Ячейки [строка, столбец]. Текст; Пароль.SendKeys((строковый) пароль);

5. Все еще не понимаю, что вы пытаетесь сделать. Вместо того, чтобы добавлять 1 col и прерывать внешний цикл, вы можете попробовать изменить строку… object PasSWord = worksheet.Cells[row, col].Text; … для … object PasSWord = worksheet.Cells[row, col 1].Text; … однако я уверен, что это просто создаст другую проблему. Какие столбцы хотят попасть в 5 строк? Если вы хотите получить два значения из двух разных столбцов в каждой строке, используйте только один цикл по строкам. С каждой итерацией извлекайте два значения из нужных столбцов.