Getting up and running with selenium for automated Code palousa

15
Getting up and running with Selenium for Automated Web Testing Emma Armstrong Website: www.taooftesting.co.uk @EmmaATester

Transcript of Getting up and running with selenium for automated Code palousa

Page 1: Getting up and running with selenium for automated  Code palousa

Getting up and running with Selenium for Automated Web Testing

Emma ArmstrongWebsite: www.taooftesting.co.uk

@EmmaATester

Page 2: Getting up and running with selenium for automated  Code palousa

Continuous DeliveryAutomate and improve software delivery process

Image from http://en.wikipedia.org/wiki/Postman_Pat

Rapidly push out enhancements to customersQuick and reliable release cyclesAutomated testing

Page 3: Getting up and running with selenium for automated  Code palousa

Where to start?

Page 4: Getting up and running with selenium for automated  Code palousa

Selenium• Works with most browsers and is multi platform (c#,

Java, Ruby)• WebDriver /IDE• Nuget packages

• Selenium.Support• Selenium.WebDriver

• Grid capabilities• Hub and clients• Simple jar file install commands

Page 5: Getting up and running with selenium for automated  Code palousa

Selenium WebDriver• Add Selenium to your project• Add Selenium to your class• Using OpenQA.Selenium;• Using OpenQA.Selenium.Firefox;

• Create an instance of the WebDriver• IWebDriver driver = new FirefoxDriver();

• Interact with that driver• Go to a web page

• Driver. Navigate().GoToUrl(“http://localhost:82”);• Find an element on the page

• Driver. FindElement(By.Id("Username"))

Page 6: Getting up and running with selenium for automated  Code palousa

NUnit• Add NUnit to your project• Add NUnit to your class

• Using Nunit.framework;

• Attributes• [TestFixture] – indicates the class contains test code• [Test] – indicates that it is a test method• [TestCase]• [TestFixtureSetup] – performed once prior to the tests in that test fixture

being run to initialise • [TestFixtureTearDown] - performed once after the tests in that test have

run to clean upTest classes must be public and have a default constructor

• Assert class• Defines a set of methods you can use to check the post condition

Page 7: Getting up and running with selenium for automated  Code palousa

Eating your own dog food

Page 8: Getting up and running with selenium for automated  Code palousa

Demo

Page 9: Getting up and running with selenium for automated  Code palousa

PageObject Model• Create a class for each page in your application• Extract common elements and web elements to a Base

class that the pages can inherit• Create your base class• Add selenium support

• Using OpenQA.Selenium.Support.PageObjects;• Define the elements on the page

• [FindsBy(How = How.Id, Using = "footer_version")] private IWebElement version;

• Initialise the elements on the page• PageFactory.InitElements(driver, this);

Page 10: Getting up and running with selenium for automated  Code palousa

Nunit test

Example c# nunit test

using System;using NUnit.Framework;using RedGate.Deploy.WebAppTests.Pages; namespace RedGate.Deploy.SmokeTests{ [TestFixture] public class VersionTest : SmokeTestBase { [Test] public void LoginPageShowsCurrentVersion() { Version expectedVersion = GetType().Assembly.GetName().Version;  LoginPage loginPage = LoginPage.Load(Driver, SmokeTestUrlBase);  Assert.AreEqual("v" + expectedVersion, loginPage.VersionNumber.Trim()); }

Page 11: Getting up and running with selenium for automated  Code palousa

Demo

Page 12: Getting up and running with selenium for automated  Code palousa

Example Java test

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

Import org.openqa.selenium.firefox.firefoxdriver;

Public class javaExample { public static void main(String[] args) throws Exception { Webdriver driver = new firefoxdriver(); driver.get("http://localhost:8080"); webelement loginname = driver.findelement(By.id("Username")); loginname.sendkeys("loginname");

Webelement password = driver.findelement(By.id("Password")); password.sendkeys("loginname");

Webelement loginbutton = driver.findelement(By.id("loginbutton")); loginbutton.submit(); driver.quit(); }}

Page 13: Getting up and running with selenium for automated  Code palousa

Selenium Grid ConfigurationInstall• java -jar selenium-server-standalone-2.14.0.jar -role hub • java -jar selenium-server-standalone-2.14.0.jar -role node -hub

http://localhost:4444/grid/registerUsage• browser browserName=firefox, version=3.6,platform=LINUX• DesiredCapabilities capability = DesiredCapabilities.firefox();• webDriver driver = new RemoteWebDriver(new

URL("http://localhost:4444/wd/hub"), capability);

Page 14: Getting up and running with selenium for automated  Code palousa

Summary

• Improve confidence in your deployment• Adding tests is easier than you might think• Automate gradually

Page 15: Getting up and running with selenium for automated  Code palousa

</talk>Code: https://github.com/EmmaArmstrong/SeleniumTesting

Emma Armstrong

@EmmaATester