У меня есть код, подобный приведенному ниже:

           try { 

                SelectElement selectSize = new SelectElement(picProfileBtn);
                IList<IWebElement> optionsProfile = selectSize.Options;

                IWebElement firstProfile = optionsProfile[0];
                Assert.AreEqual("S", firstProfile.Text);
                IWebElement secondProfile = optionsProfile[1];
                Assert.AreEqual("M", secondProfile.Text);
                IWebElement thirdProfile = optionsProfile[2];
                Assert.AreEqual("L", thirdProfile.Text);
                IWebElement fourthProfile = optionsProfile[3];
                Assert.AreEqual("Test", fourthProfile.Text);
                
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

В случае неудачного первого утверждения, есть ли способ продолжить тест до конца? И если какое-либо другое утверждение не выполняется или возникает какое-либо другое исключение, все это находится в одном и том же сообщении трассировки стека?

Что у меня есть сейчас, если одно утверждение не удается, тест существует, и я получаю сообщение с трассировкой стека.

0
DjNewma 20 Май 2021 в 16:17

4 ответа

Лучший ответ

Вы можете поместить каждое утверждение в отдельный блок try / catch следующим образом.

       try { 

            SelectElement selectSize = new SelectElement(picProfileBtn);
            IList<IWebElement> optionsProfile = selectSize.Options;

            IWebElement firstProfile = optionsProfile[0];
            Assert.AreEqual("S", firstProfile.Text);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
        try {
            IWebElement secondProfile = optionsProfile[1];
            Assert.AreEqual("M", secondProfile.Text);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
        try {
            IWebElement thirdProfile = optionsProfile[2];
            Assert.AreEqual("L", thirdProfile.Text);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
        try {
            IWebElement fourthProfile = optionsProfile[3];
            Assert.AreEqual("Test", fourthProfile.Text);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
0
Hans Kilian 20 Май 2021 в 13:25

Используйте цикл for, подобный этому

           string[] profiles = { "S", "M", "L", "Test" };
            try
            {
                SelectElement selectSize = new SelectElement(picProfileBtn);
                IList<IWebElement> optionsProfile = selectSize.Options;
                for(int i = 0; i < profiles.Length; i++)
                {
                    IWebElement firstProfile = optionsProfile[i];
                    Assert.AreEqual(profiles[i], firstProfile.Text);
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }

            }
-1
jdweng 20 Май 2021 в 13:25

Это концепция try catch, вам следует писать только код, который может привести к сбою в try catch.

public void validate(string actual, string expected) {
try {
     Assert.AreEqual(actual, expected); }
catch (Exception ex){
     Console.WriteLine(ex.Message);
    }
}

И вызовите этот метод для всей проверки следующим образом:

 validate("S", optionsProfile[0]);

Вы можете вызывать этот метод проверки сколько угодно раз.

0
cruisepandey 20 Май 2021 в 13:28

Ваш вопрос не совсем ясен, поэтому я пытаюсь дать ему интерпретацию.

Вот мое предложение, надеюсь, это то, что вам нужно:

try { 
    SelectElement selectSize = new SelectElement(picProfileBtn);
    IList<IWebElement> optionsProfile = selectSize.Options;

    try {
        IWebElement firstProfile = optionsProfile[0];
        Assert.AreEqual("S", firstProfile.Text);
    } catch(AssertFailedException e) {
        Console.WriteLine("Test 1 failed: " + ex.Message);
    }

    try {
        IWebElement secondProfile = optionsProfile[1];
        Assert.AreEqual("M", secondProfile.Text);
    } catch(AssertFailedException e) {
        Console.WriteLine("Test 2 failed: " + ex.Message);
    }

    try {
        IWebElement thirdProfile = optionsProfile[2];
        Assert.AreEqual("L", thirdProfile.Text);
    } catch(AssertFailedException e) {
        Console.WriteLine("Test 3 failed: " + ex.Message);
    }

    try {
        IWebElement fourthProfile = optionsProfile[3];
        Assert.AreEqual("Test", fourthProfile.Text);
    } catch(AssertFailedException e) {
        Console.WriteLine("Test 4 failed: " + ex.Message);
    }
} catch (Exception ex) {
    Console.WriteLine("Unhandled exception: " + ex.Message);
}
0
Antonio Petricca 20 Май 2021 в 13:27