Shafikul Islam Ответов: 0

Вопрос по Селену с C#


Здравствуйте Бриллиантами,

Я не знаю, правильно ли здесь задавать этот вопрос. Я разработал гибридный фреймворк Selenium на языке C#. У меня есть два тестовых набора, которые по отдельности работают нормально. Я читаю данные с внешнего электронного листа. Но если я хочу работать параллельно с помощью
[Parallelizable]
атрибут, один тестовый кейс показывает сбой сразу же, а другой тестовый кейс работает совершенно нормально. Тестовый кейс был взят случайным образом. Я использовал SeleniumWebDriver версии от 2.53.0 до 3.12.0. я пытаюсь решить эту проблему последние 7 дней, но не получаю никаких подсказок. Коды и исключения приведены ниже:

Первый Тестовый Случай:
namespace FA2HybridFramework.TestCases
{
    [TestFixture]
    [Parallelizable]
    public class LoginTest : BaseTest
    {
        //static ExcelReaderFile xls = new ExcelReaderFile(Constants.FA_Xls);
        string testCaseName = "LoginTest";

        [Test, TestCaseSource("getData")]
        public void loginTest(Dictionary<string, string> data)
        {
            //rep = ExtentManager.getInstance();
            ExtentTest test = rep.CreateTest("LoginTest", "This test will describe my Login Test!");

            if (DataUtil.isSkip(xls, testCaseName) || data["Runmode"].Equals("N"))
            {
                test.Log(Status.Skip, "Skipping the Test as Runmode is No");
                Assert.Ignore("Skipping the Test as Runmode is No");
            }
            app = new Keywords(test);

            test.Log(Status.Info, "Starting my FAOnline Login Test");
            test.Log(Status.Info, "Executing Keywords");
            app.executeKeywords(testCaseName, xls, data);
            app.getGenericKeywords().takeScreenshot();
            
        }        
        // Data Source
        public static object[] getData()
        {
            ExcelReaderFile xls = new ExcelReaderFile(Constants.FA_Xls);
            return DataUtil.getData(xls, "LoginTest");
        }        
    }
}

Второй Тестовый Случай:
namespace FA2HybridFramework.TestCases
{
    [TestFixture]
    [Parallelizable]
    public class CreateDHSAccount : BaseTest
    {
        //static ExcelReaderFile xls = new ExcelReaderFile(Constants.FA_Xls);        
        string testCaseName = "CreateDHSAccount";

        [Test, TestCaseSource("getData")]
        public void createDHSAccount(Dictionary<string, string> data)
        {
           
            //rep = ExtentManager.getInstance();
            ExtentTest test = rep.CreateTest("CreateDHSAccount", "This test will Create DHS Account Test!");
            if (DataUtil.isSkip(xls, testCaseName) || data["Runmode"].Equals("N"))
            {
                test.Log(Status.Skip, "Skipping the Test as Runmode is No");
                Assert.Ignore("Skipping the Test as Runmode is No");
            }
            app = new Keywords(test);

            test.Log(Status.Info, "Starting my Create DHS Account Test");
            test.Log(Status.Info, "Executing Keywords");
            app.executeKeywords(testCaseName, xls, data);
            app.getGenericKeywords().takeScreenshot();
            
        }
        // Data Source
        public static object[] getData()
        {
            ExcelReaderFile xls = new ExcelReaderFile(Constants.FA_Xls);
            return DataUtil.getData(xls, "CreateDHSAccount");
        }
    }
}


Базовый Тест:
namespace FA2HybridFramework.Base
{
    public class BaseTest
    {
        //public ExtentReports rep;
        public ExcelReaderFile xls = new ExcelReaderFile(Constants.FA_Xls);
        public ExtentReports rep = ExtentManager.getInstance();
        public Keywords app = null;
        
        [TearDown]
        public void quit()
        {
            if (rep != null)
                rep.Flush();
            if (app != null)
                app.getGenericKeywords().closeBrowser();

        }
    }
}


функция openBrowser:
{
                string filePath = Path.GetDirectoryName(System.AppDomain.CurrentDomain.BaseDirectory);
                filePath = Directory.GetParent(Directory.GetParent(filePath).FullName).FullName;

                if (browserType.Equals("Mozilla"))
                    
                    //driver = new FirefoxDriver(filePath + "\\Drivers");
                    driver = new FirefoxDriver();
                else if (browserType.Equals("Chrome"))
                    driver = new ChromeDriver(filePath + "\\Drivers");
                    //driver = new ChromeDriver();
                else if (browserType.Equals("IE"))
                    driver = new InternetExplorerDriver(filePath + "\\Drivers");
                    //driver = new InternetExplorerDriver();
            }


Исключение:

Test Name:	createDHSAccount(System.Collections.Generic.Dictionary`2[System.String,System.String])
Test FullName:	FA2HybridFramework.TestCases.CreateDHSAccount.createDHSAccount(System.Collections.Generic.Dictionary`2[System.String,System.String])
Test Source:	C:\SeleniumFrameworkNew\FA2HybridFramework\FA2HybridFramework\TestCases\CreateDHSAccount.cs : line 21
Test Outcome:	Failed
Test Duration:	0:00:00.0000003

Result1 Name:	createDHSAccount(System.Collections.Generic.Dictionary`2[System.String,System.String])
Result1 Outcome:	Failed
Result1 Duration:	0:00:00.0000001
Result1 StackTrace:
Result1 Message:	
OneTimeSetUp: System.Reflection.TargetInvocationException : Exception has been thrown by the target of an invocation.
  ----> System.InvalidOperationException : Collection was modified; enumeration operation may not execute.
Result1 StandardOutput:
Result1 StandardError:

Result2 Name:	createDHSAccount(System.Collections.Generic.Dictionary`2[System.String,System.String])
Result2 Outcome:	Failed
Result2 Duration:	0:00:00.0000001
Result2 StackTrace:
Result2 Message:	
OneTimeSetUp: System.Reflection.TargetInvocationException : Exception has been thrown by the target of an invocation.
  ----> System.InvalidOperationException : Collection was modified; enumeration operation may not execute.
Result2 StandardOutput:
Result2 StandardError:

Result3 Name:	createDHSAccount(System.Collections.Generic.Dictionary`2[System.String,System.String])
Result3 Outcome:	Failed
Result3 Duration:	0:00:00.0000001
Result3 StackTrace:
Result3 Message:	
OneTimeSetUp: System.Reflection.TargetInvocationException : Exception has been thrown by the target of an invocation.
  ----> System.InvalidOperationException : Collection was modified; enumeration operation may not execute.
Result3 StandardOutput:
Result3 StandardError:


Пожалуйста, помогите мне. Я нахожусь в очень плохом положении.

Что я уже пробовал:

Если я "отлаживаю выбранные тесты", то оба работают нормально.

Vibhav Ramcharan

Шафикул, я смотрю на дату, когда это было опубликовано. Вы нашли решение этой проблемы?

0 Ответов