Selenium with C# : How to start running Automated Tests
By Ganesh Hegde, Community Contributor - August 12, 2024
Selenium is a popular automation testing tool. Quite often, Selenium needs to be used with C# and Visual Studio IDE together for a better-automated testing experience.
Using Selenium, C#, and Visual Studio together provides a unique opportunity to create a robust, scalable, and flexible automation framework. This article will discuss how to do exactly that.
- What is C#?
- Why is C# used for Automation Testing?
- Getting Started with Selenium and C#
- What is Visual Studio IDE?
- How to Install Visual Studio
- Selenium C# Automation Framework using Visual Studio
- Using ChromeDriver in Selenium C# using Visual Studio
- Using GeckoDriver in Selenium C# using Visual Studio
- Which framework is best for Selenium C#?
- Selenium C# Test using NUnit in Visual Studio IDE
- How to run Selenium C# Tests with Example
- How to Execute C# Selenium Tests on Firefox
- Selenium C# Resources
- Why run Selenium C# Tests on BrowserStack Real Device Cloud?
What is C#?
C# (also referred to as C Sharp) is a modern, object-oriented, and type-safe programming language. It enables developers to build many types of secure and robust applications that run in the .NET ecosystem. C# has its roots in the C family of languages and will be immediately familiar to C, C++, Java, and JavaScript programmers.
Why is C# used for Automation Testing?
C# is used for testing because it is a modern, statically-typed, object-oriented programming language. Its syntax is easy to read and understand, making it a good choice for writing tests that need to be maintained over time. It provides a comprehensive set of features for creating automated tests.
Additionally, C# has a rich set of libraries and frameworks, such as NUnit, that can be used to write tests for a wide range of applications, from desktop and web applications to games and mobile apps.
Getting Started with Selenium and C#
Before running a test with Selenium and C#, we need to complete the basic prerequisites.
- Install Visual Studio
- Create Selenium C# automation framework .NET Core 5.0 from scratch using Visual Studio
- Add Chromedriver to Selenium C# Project using Visual Studio
- Add GeckoDriver to Selenium C# Project
What is Visual Studio IDE?
Microsoft Visual Studio is an integrated development environment (IDE) from Microsoft. It provides rich development and testing experience with Intellisense, multiple programming language support, and easy debugging.
Using Visual Studio one can easily set up all configurations required for development and testing, write and run tests, and get instant results. This tool is quite easy to set up and use, even for beginners.
Visual Studio Community Version is completely free. One can download and enjoy the features of Visual Studio IDE seamlessly.
How to Install Visual Studio
Visual Studio IDE is available in both free and paid versions. The community version of Visual Studio is free.
- Download Visual Studio Community Edition from Microsoft official website.
- Click on Free Download, and the .exe file will be downloaded.
- Click on the .exe file to start the Visual Studio Installer.
- Click on the installer file, the Privacy and License Terms window appears, click on Continue to start installation.
- Visual Studio Installer downloads and prepares Visual Studio for installation.
Note: This is Visual Studio Installer, not the Actual Visual Studio - Once the Preparation is complete, the Visual Studio installation window appears. Users will have to choose a set of tools. To build an automation framework one can choose the Asp.net and Web development option. Click on Install to proceed.
- Installation begins and its progress percentage will be shown accordingly.
Note: The installation takes some time depending on the internet speed. - Once the installation is complete, the Restart pop up window appears. Click on Restart.
- After a successful restart of the system, the Visual Studio setup pop up will appear. Click on Not now, Maybe later.Note: Sometimes, after restart the above window doesn’t appear. If it doesn’t appear automatically just Open Visual Studio from the Windows Start Menu.
- Choose a Theme for Visual Studio, and click on Start Visual studio.
- Visual Studio prepares settings for First Use.
Note: This stage takes some time to finish. - Once the above step is completed, the Get Started Window opens.
- Visual Studio Installation is complete.
Selenium C# Automation Framework using Visual Studio
- Open Visual Studio from the Windows Start Menu.
- Click on Create New Project.
- Search for NUnit Template. From the Search Results choose C# NUnit Test Project (.NET core).Note: Selenium C# project can be created using MSTest libraries as well, but Nunit is most widely used with C# and Selenium.
- In the Configuration Section, enter the required details:
Project Name: Any Name (ex: SeleniumCsharp)
Location: Desired Location (Ex: C:/MyFolder)
Solution Name: Any Name (Ex: SeleniumCsharp)
After entering the details, click Next.
- In the additional Information section, chooseTarget Framework : .NET 5.0 (Current)Click on Create.
- After clicking Create, Visual Studio creates Selenium C# framework with NUnit Test Runner.
The default framework contains dependencies for NUnit and NUnit Test Adapter. One file with .cs extension will be created by default i.e UnitTest1.cs. - Add Selenium Dependencies for the project.To run Selenium tests using C# and NUnit, add Selenium dependencies:- Click on the Tools Menu– Click on NuGet Package Manager
– Click on Manage NuGet Package for Solution - Search for Selenium Webdriver and add the package.In the NuGet Package Explorer window:– Click on Browse,
– In the Search box type Selenium
– Choose Selenium.Webdriver by Selenium
– On the window to the right, select the checkbox which shows Project Name
– Click on Install - If it prompts for the License Acceptance Window, click on Accept.
- Wait for the installation to finish.
- Install the Selenium Support Package from NuGet:
– Navigate to NuGet Package Manager (Tools > NuGet Package Manager > Manage NuGet Package for Solution)
– Type Selenium Support
– Click on Selenium Support from Search Results
– Choose the Project Name checkbox (the current project)
– Click on Install - Wait for the installation to finish.
- Once Selenium Webdriver and Selenium Support NuGet package is installed one should see the dependencies added in the project:
All required dependencies have been added for a Selenium C# project.
Read More: NUnit Vs XUnit Vs MSTest: Core Differences
In order to execute tests, one must have the desired browser driver. For example, to run tests on Chrome, testers need Chromedriver. To run tests on Firefox they need GeckoDriver, etc.
Using ChromeDriver in Selenium C# using Visual Studio
- Navigate to Solution Explorer in Visual Studio.
- Right click on the Project (ex: SeleniumCsharp)
Note: Right Click on the Project Name, not on the Solution Name. - Click Add.
- Click New Folder.
- Name the new folder drivers.
- Download ChromeDriver by navigating to the Chromium webpage.
- Click on ChromeDriver <XX.XX.XXX>.
- A new web page will open up and ask for the target Operating System (Windows, in this case).
- Click on the right option and ChromeDriver will be downloaded as a Zip file.
- Extract the zip folder to the desired project location: the previously created folder drivers, in this case. To do that, simply right click on the drivers folder in Visual Studio, and choose Open Folder in Explorer.
This will open the driver folder in Windows File Explorer. Now, the ChromeDriver zip file is downloaded to the required location, extract the ChromeDriver zip here.
Alternatively, right click on zip file > Click on Extract All > Specify folder location.
After extraction, the drivers folder should contain chromedriver.exe.
Using GeckoDriver in Selenium C# using Visual Studio
Note: This step is required to run tests on Firefox.
- Navigate Gecko driver Download web page:
– Navigate to Mozilla Github
– Click on Releases under Downloads
- Choose the correct platform for GeckoDriver and download.
– In the Releases page, scroll down to the Assets section.
– Choose the desired GeckoDriver for the Operating System being used (Windows, in this case). - After completion of Step 2, the zip file containing geckodriver.exe will be downloaded.
- Extract the GeckoDriver to the drivers folder created earlier.Note: Step 4 is similar to Chromedriver download. Simply extract geckodriver.exe and place it in drivers folder.After completing this step, the drivers folder should contain two .exe files namely chromedriver.exe and geckodriver.exe.
Which framework is best for Selenium C#?
NUnit Framework is the best for Selenium C#. NUnit provides a rich set of features for organizing and structuring tests, making it easy to write and maintain automated tests. Additionally, it supports data-driven testing and parallel test execution, which can help to significantly reduce the time taken to run a suite of tests.
Selenium C# Test using NUnit in Visual Studio IDE
In the existing project, there already exists a file created by default named UnitTest1.cs. Rename that to SeleniumTest.cs (for easy readability).
Also Read: How to write Nunit Parameterized Test
Double click on the SeleniumTest.cs file and write a few tests.
In this case, 3 tests are being created.
- Test 1: Navigates to the BrowserStack homepage and verifies the company logo.
- Test 2: Verifies for all menu items count on the BrowserStack homepage.
- Test 3: Navigates to the BrowserStack pricing section and verifies the header.
Source Code: SeleniumTest.cs
//Inside SeleniumTest.cs using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using OpenQA.Selenium.Firefox; using System; using System.Collections.ObjectModel; using System.IO; namespace SeleniumCsharp { public class Tests { IWebDriver driver; [OneTimeSetUp] public void Setup() { //Below code is to get the drivers folder path dynamically. //You can also specify chromedriver.exe path dircly ex: C:/MyProject/Project/drivers string path = Directory.GetParent(Environment.CurrentDirectory).Parent.Parent.FullName; //Creates the ChomeDriver object, Executes tests on Google Chrome driver = new ChromeDriver(path+@"\drivers\"); //If you want to Execute Tests on Firefox uncomment the below code // Specify Correct location of geckodriver.exe folder path. Ex: C:/Project/drivers //driver= new FirefoxDriver(path + @"\drivers\"); } [Test] public void verifyLogo() { driver.Navigate().GoToUrl("https://www.browserstack.com/"); Assert.IsTrue(driver.FindElement(By.Id("logo")).Displayed); } [Test] public void verifyMenuItemcount() { ReadOnlyCollection<IWebElement> menuItem = driver.FindElements(By.XPath("//ul[contains(@class,'horizontal-list product-menu')]/li")); Assert.AreEqual(menuItem.Count, 4); } [Test] public void verifyPricingPage() { driver.Navigate().GoToUrl("https://browserstack.com/pricing"); IWebElement contactUsPageHeader = driver.FindElement(By.TagName("h1")); Assert.IsTrue(contactUsPageHeader.Text.Contains("Replace your device lab and VMs with any of these plans")); } [OneTimeTearDown] public void TearDown() { driver.Quit(); } } }
The tests have been created, as seen above.
How to run Selenium C# Tests with Example
- Open Test Explorer window. Click on Test Menu. Click on Test Explorer. New tab named Test Explorer opens up on the left of Visual Studio IDE
- Click on Run All in the Test Explorer window
- Tests start executing.
- Once all your tests finish executing, the results will be marked as shown below:
How to Execute C# Selenium Tests on Firefox
In the source code above under SeleniumTest.cs, ChromeDriver is created in the following line:
driver = new ChromeDriver(path+@"\drivers\");
Now, to run the tests on Firefox, one must create FirefoxDriver Object. To do so, simply comment the Chrome Driver code and uncomment the FirefoxDriver code, as below:
driver= new FirefoxDriver(path + @"\drivers\");
Note: For FirefoxDriver object the code is taking a dynamic path. But alternatively, one can directly specify the path to geckodriver.exe.
driver = new FirefoxDriver(@'C:/MyProject/Project/driver');
The rest of the test execution steps remain the same.
Selenium C# Resources
- How to set up Selenium on Visual Studio
- Page Object Model and Page Factory in Selenium C#
- Wait Commands in Selenium C and C#
- Cross Browser Testing Selenium C# NUnit
- How to perform Web Scraping using Selenium C#
Why run Selenium C# Tests on BrowserStack Real Device Cloud?
You should run Selenium C# Tests on a real device cloud like BrowserStack Automate for below reasons:
- Realistic Testing Conditions: Real device clouds provide access to a broad spectrum of devices and environments, ensuring tests reflect actual user conditions accurately.
- Enhanced Security: Maintained with high security standards, real device clouds offer secure, isolated testing environments, minimizing data breach risks.
- Broad Browser and OS Coverage: Helps identify compatibility issues across various browsers and operating systems, enhancing user experience.
- Performance Insights: Real devices yield authentic performance data essential for optimizing application responsiveness.
- Scalability and Accessibility: Facilitates scalable and accessible testing, suitable for distributed teams.
- CI/CD Integration: Integrates smoothly with CI/CD pipelines for continuous testing and early issue detection.
- Cost-Effectiveness: Although initially more costly, it saves on long-term expenses related to fixes and support.
Conclusion
Now that a Selenium & C# framework has been created using Visual Studio, it can be enhanced to meet the specific needs of teams and organizations. Bear in mind, however, that Selenium WebDriver tests must be executed on real devices and browsers. Remember that device fragmentation is a major concern for every developer and tester. Every website has to work seamlessly on multiple device-browser-OS combinations. With 9000+ distinct devices being used to access the internet globally, all software has to be optimized for different configurations, viewports, and screen resolutions.
In this state, no emulator or simulator can replicate real user conditions. Software needs to be tested on real devices so that they can work in real-world circumstances such as a low battery, incoming calls, weak network strength, and so on. If an in-house lab is not accessible, opt for a cloud-based testing option that offers real devices.
BrowserStack’s cloud Selenium grid offers 3500+ real devices and browsers for automated testing. That means users can run tests on multiple real devices and browsers by simply signing up, logging in, and selecting the required combinations.