Вопрос по Селену с 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
Шафикул, я смотрю на дату, когда это было опубликовано. Вы нашли решение этой проблемы?