Configuring Selenium 2.0 with Chrome to work in Visual Studio
In a previous post/video I showed how to get started using Selenium WebDriver for IE in Visual Studio.
Since then I've received a few questions on how to do the same with Selenium Web Driver and Chrome in Visual Studio. Rather than answer each one individual, I thought it would be better to frame my replay in the form of a quick post.
Today in this post we are going to check out how to configure Selenium 2.0 WebDriver to work with Visual Studio and Google Chrome.
First Download the Selenium C# Client Drivers
- The first thing we want to do is download the C# DLLs from Selenium's web site:
- You also need to download the chromedriver from:
- Once you've downloaded the required Selenium files extract the zips to a local drive on your computer.
Configure Visual Studio to work with Selenium
- Launch Visual Studio and start a new project
Select ‘Console Application' and name your project mySelenium
In your project select Project>Add References from the tool bar and browser to the location where you extracting the DLLs to. Make sure that you select the correct version of .NET that you will be using:
Select all the DLLs and click ok
Time to Code!
Cool – now that we have the Selenium DLLs referenced in our project it time to test the configuration by running a quick test.
1. At the top of your project code after the last ‘using' namespace add the following Selenium namespaces:
using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using OpenQA.Selenium.Support.UI;
2. Add the following code in your static void main section:
//!Make sure to add the path to where you extracting the chromedriver.exe: IWebDriver driver = new ChromeDriver(@"D:\Download\chromedriver"); //<-Add your path driver.Navigate().GoToUrl("http://www.joecolantonio.com/HpSupport.html");
Note: You could also create an environment variable named webdriver.chrome.driver on your machine that's value is the path to where the local chromedriver.exe is located. If you setup an webdriver.chrome.driver variable you would not have to pass the chromedriver argument when you create a ChromeDriver instance.
Your code should look like this:
3. Run the test – Google Chrome should start and bring up http://www.joecolantonio.com/HpSupport.html
Chrome Developer Tools
If you are going to be scripting against Chrome you should check out the built in Developer tools (Ctrl+Shift+I). For those familiar with QTP this is like QTP's spy feature.
1. In Google Chrome go to Tools>Developer tools
2. Using the Chrome magnifying glass icon feature allows you to spy on an element's attributes. You then use these attribute in your Selenium code to help identify fields in you web application.
3. For example if we want to navigate to www.joecolantonio.com/HpSupport.html and select a value from the ‘Select your tool & Version' you would point the magnifying glass to the ‘Select you tool & version” field to get its attributes:
4. Now that we know what the id is we can use that to help Selenium interact with it. For example:
IWebDriver driver = new ChromeDriver(@"D:\Download\chromedriver"); driver.Navigate().GoToUrl("http://www.joecolantonio.com/HpSupport.html"); IWebElement myField = driver.FindElement(By.Id("tools")); myField.SendKeys("QTP10");
5. Run the test – it should start Chrome, navigate to http://www.joecolantonio/HPSupport.Html and select QTP10 from the Select your tool & version.
Good Luck and happy Selenium scripting to you!