I'm currently working on a selenium framework model which will be based on C# .net.
One main thing i'd like to know from all the selenium experts is if i should really build the framework in c#.net? Are there any real benefits of building the framework in JAVA over building it in C#.net?
Main ingredients/USP of this framework-
Ease of writing a test. E.g for clicking on a button, the coder has to simply write Dom.find("#elementid").click(), Dom.WaitFor("#elementid") or Dom.WaitTillDisappears("#elementd") Purpose of this is to abstract the whole selenium driver,properties,handling chromedriver, and all the dirty stuff thats too long for a not-so-experienced-coder. For this, i've built an model, using OOPS, defining classes that handle the whole initialisation of chromedriver and the other stuff, so the tester doesn't have to care about it while writing the code.
I'm using unit testing frameworks, such as unit test and defining abstract classes which represent a Test run and a test case, so what a the person writing the code has to do is simply define testcases and write their script under it and run these cases as unit tests.
I've added Db logging which will create logs for each and every action performed, from "trying to find an element" to "typing something in an element", so if anything fails, a person has the ability to study the log and find out what exactly went wrong.
Error handling is done using SeleniumExceptions, and i am overiding the messages to make it more readable for the framework users.
I was thinking of creating a simple abstract class, lets say PageComponents.cs which could be an abstract class and have have basic functions like retrieving page info, getting id,attributes,class,etc. A person preferring creating their scripts in POM can simply define all the components using the By type, so lets say all they have to do is create another class file called LoginPage.cs, inherit from PageComponents.cs and then simply start declaring their objects. In the other files, where users will be writing their script, they can simple access these Page objects by initialising LoginPage. Anything changes, in loginpage, all they have to do is Change properties of objects in LoginPage.cs
Now, the reason i write this whole discussion is to understand the perspective of all the people who are working on selenium or have worked on a framework. I would like to understand all the pros and cons of this framework model i am trying to follow and if there is anything better you guys can suggest(which you have already worked on) that would be great. I'm starting this discussion to understand, what is being followed by other companies and individuals who are far more experienced than i am. Thank you in advance for you valuable feedbacks!