Как вы игнорируете меню флота, если оно действительно отображается на веб-сайте при чтении из файла text.txt? - PullRequest
0 голосов
/ 03 октября 2019

Хорошо, я создал текстовый файл для моих автоматических сценариев c #. Есть только четыре строки, 1-й столбец - роль, 2-й столбец - электронная почта, 3-й столбец - флот, 4-й столбец - пользователи. Первая строка отличается от остальных тем, что в 3-м столбце нет данных, поэтому в текстовом файле она читается как «». Когда он ищет его в меню, он явно не может его найти. Поскольку его там нет, тестовый скрипт просто зависает и выдает ошибку, неспособную найти элемент, и скрипт завершается ошибкой. Итак, мой вопрос, есть ли что-то, что я могу вставить в текстовый файл или что-то, что я мог бы вставить в код, чтобы игнорировать и продолжить:

public void AddSingleUser(string email, string role, string [] fleets)
        {
            _regRep.btnAddUser.Click();
            objCommon.EnterText(_regRep.firstNameAdd, userName);
            objCommon.EnterText(_regRep.lastNameAdd, "Smithy");
            objCommon.EnterText(_regRep.userEmailAdd, email);
            objCommon.EnterText(_regRep.userTelephoneAdd, "12345678901");
            objCommon.Exists(_regRep.userRoleManager(role), 10);
            objCommon.ScrollInToViewAndClick(_regRep.userRoleManager(role));

            foreach (string fleet in fleets)
            {
                objCommon.Exists(_regRep.chooseFleet(fleet), 5);
                objCommon.ScrollInToViewAndClick(_regRep.chooseFleet(fleet));
            }
            System.Threading.Thread.Sleep(2000);
            objCommon.ScrollInToViewAndClick(_regRep.btnSaveUser);

            WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(20));
            wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.XPath("//div[text() = 'User created.']")));
        }

Текстовый файл, пожалуйста, обратите внимание, для пустого парка:

Administrator,testadmin@hotmail.com,,fleetmanager@hotmail.com-driver01@hotmail.com-driver06@hotmail.com
Manager,fleetmanager@hotmail.com,Foody Fleet-Fleetingly Employed,fleetmanager01@hotmail.com-driver02@hotmail.com-fleetmanager02@hotmail.com-driver07@hotmail.com
Manager,fleetmanager01@hotmail.com,Foody Fleet-Fleetingly Employed,fleetmanager01@hotmail.com-driver02@hotmail.com-fleetmanager02@hotmail.com-driver07@hotmail.com
Manager,fleetmanager02@hotmail.com,Foody Fleet-Fleetingly Employed,fleetmanager01@hotmail.com-driver02@hotmail.com-fleetmanager02@hotmail.com-driver07@hotmail.com

1 Ответ

0 голосов
/ 03 октября 2019

Все, что вам нужно добавить, это проверить, если fleet равно "" (пустая строка). Если так, пропустите это и продолжайте. Я добавил оператор if в ваш существующий код ниже.

public void AddSingleUser(string email, string role, string [] fleets)
{
    _regRep.btnAddUser.Click();
    objCommon.EnterText(_regRep.firstNameAdd, userName);
    objCommon.EnterText(_regRep.lastNameAdd, "Smithy");
    objCommon.EnterText(_regRep.userEmailAdd, email);
    objCommon.EnterText(_regRep.userTelephoneAdd, "12345678901");
    objCommon.Exists(_regRep.userRoleManager(role), 10);
    objCommon.ScrollInToViewAndClick(_regRep.userRoleManager(role));

    foreach (string fleet in fleets)
    {
        if (fleet != "")
        {
            objCommon.Exists(_regRep.chooseFleet(fleet), 5);
            objCommon.ScrollInToViewAndClick(_regRep.chooseFleet(fleet));
        }
    }
    System.Threading.Thread.Sleep(2000);
    objCommon.ScrollInToViewAndClick(_regRep.btnSaveUser);

    WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(20));
    wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.XPath("//div[text() = 'User created.']")));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...