#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 строк? Если вы хотите получить два значения из двух разных столбцов в каждой строке, используйте только один цикл по строкам. С каждой итерацией извлекайте два значения из нужных столбцов.