Java >> Java-zelfstudie >  >> Java

TestNG Selenium-integratievoorbeeld

In dit artikel laat ik je een voorbeeld zien van TestNG en Selenium-integratie. Ik wil u eerst informeren over TestNG en Selenium.

TestNG is een op annotaties gebaseerd testraamwerk waarmee u configureerbare testsuites kunt maken waarbij elke suite een of meer tests bevat. Een test bestaat op zijn beurt uit nog een testklasse.

Selenium wordt gebruikt bij het automatiseren van webapplicaties voor testdoeleinden. In tegenstelling tot HtmlUnit gebruikt het een echte browser om zijn tests uit te voeren.

Laten we beginnen met de installatie:

  • Aangezien het voorbeeld gaat over de integratie van TestNG en Selenium, vereenvoudigen we onze installatie door Maven als onze build-tool te gebruiken.
  • TestNG Maven-projectvoorbeeld helpt u bij het opzetten van een op Maven gebaseerd project en het uitvoeren van de TestNG-tests.
  • Onze voorbeelden zijn gebaseerd op Chrome en Firefox, dus zorg ervoor dat beide op uw computer zijn geïnstalleerd.
  • De browserstuurprogramma's worden automatisch gedownload als gevolg van de toevoeging van de afhankelijkheden aan het maven-projectbestand pom.xml .
  • In het geval van chrome moeten we ook chromedriver.exe downloaden. Dit fungeert als een brug tussen chroom en de bestuurder.
  • Ik heb Eclipse gebruikt als de IDE, versie Luna 4.4.1.

1. Afhankelijkheden van TestNG en selenium

Aangezien ons project afhankelijk is van TestNG en selenium, moeten we hun afhankelijkheden toevoegen in Maven's pom.xml het dossier. Voor TestNG moeten we org.testng . toevoegen pakket en voor selenium moeten we org.seleniumhq.selenium . toevoegen . Eenmaal opgeslagen, zal het de Selenium 2.0 java-clientbibliotheek en al zijn afhankelijkheden downloaden.

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.javacodegeeks.testng.spring</groupId>
	<artifactId>testNGSpring</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<dependencies>
		<dependency>
			<groupId>org.seleniumhq.selenium</groupId>
			<artifactId>selenium-java</artifactId>
			<version>2.45.0</version>
		</dependency>
		<dependency>
			<groupId>org.testng</groupId>
			<artifactId>testng</artifactId>
			<version>6.8.8</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
	<properties>
		<spring.version>4.1.5.RELEASE</spring.version>
	</properties>
</project>

2. TestNG Selenium Eenvoudig zoekvoorbeeld

Selenium biedt WebDriver als zijn API voor het automatiseren van het testen van webapplicaties. WebDriver stuurt de browser rechtstreeks aan met behulp van de ingebouwde ondersteuning voor automatisering van elke browser.

In dit voorbeeld gebruiken we de WebDriver om google te openen en te zoeken naar TestNG.

WebDriver is een interface, dus we hebben nog steeds een implementatie nodig om de test in een echte browser uit te voeren. We zullen de implementatie selecteren op basis van de gebruikte browser. Als we bijvoorbeeld Firefox gebruiken, gebruiken we FirefoxDriver . Als het chrome is, gebruiken we ChromeDriver . Sinds ChromeDriver werkt met Chrome via de chromedriver.exe, moeten we ervoor zorgen dat het binaire bestand ergens op het pad van uw systeem wordt geplaatst.

Aandachtspunten met betrekking tot de testklasse:

  1. In @BeforeSuite methode, initDriver() , we maken de driver.
  2. searchTestNGInGoogle() is onze testmethode.
  3. We bellen driver.navigate().to(url) om de url te openen.
  4. Zodra de site open is, moeten we een greep krijgen op het zoekveld, zodat we de tekst kunnen typen die moet worden doorzocht.
  5. Als we driver.findElement(By.name("q")) bellen , de WebDriver lokaliseert het zoekveld met behulp van overeenkomend naamkenmerk.
  6. Vervolgens noemen we element.sendKeys("TestNG") om de tekst "TestNG" in het zoekveld in te voeren.
  7. De zoekopdracht wordt ingediend door element.submit(). . te bellen
  8. Ten slotte wachten we tot de resultaten worden teruggestuurd.
  9. In @AfterSuite methode, quitDriver() , we noemen driver.quit() om de browsersessie te sluiten.

TestNGSeleniumSimpleSearchExample:

package com.javacodegeeks.testng.selenium;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Test;

public class TestNGSeleniumSimpleSearchExample {
	private WebDriver driver;

	@BeforeSuite
	public void initDriver() throws Exception {
		System.out.println("You are testing in firefox");
		driver = new FirefoxDriver();
	}

	@Test
	public void searchTestNGInGoogle() {
		final String searchKey = "TestNG";
		System.out.println("Search " + searchKey + " in google");
		driver.navigate().to("http://www.google.com");
		WebElement element = driver.findElement(By.name("q"));
		System.out.println("Enter " + searchKey);
		element.sendKeys(searchKey);
		System.out.println("submit");
		element.submit();
		(new WebDriverWait(driver, 10)).until(new ExpectedCondition() {
			public Boolean apply(WebDriver d) {
				return d.getTitle().toLowerCase()
						.startsWith(searchKey.toLowerCase());
			}
		});
		System.out.println("Got " + searchKey + " results");
	}

	@AfterSuite
	public void quitDriver() throws Exception {
		driver.quit();
	}
}

testngSimpleSearch.xml:

<?xml version="1.0" encoding="UTF-8"?>
<suite name="TestNgSeleniumSuite" parallel="false">
	<test name="TestNgSeleniumTest">
		<classes>
			<class
				name="com.javacodegeeks.testng.selenium.TestNGSeleniumSimpleSearchExample" />
		</classes>
	</test>
</suite>

Uitvoer:

[TestNG] Running:
  C:\javacodegeeks_ws\testNGSelenium\src\test\resources\com\javacodegeeks\testng\selenium\testngSimpleSearch.xml

You are testing in firefox
Search TestNG in google
Enter TestNG
submit
Got TestNG results

===============================================
TestNgSeleniumSuite
Total tests run: 1, Failures: 0, Skips: 0
===============================================

3. WebDriver-injectie met veer

In plaats van zelf de WebDriver te maken, kunnen we de implementatie injecteren met behulp van de afhankelijkheidsinjectie van de lente. Hier zullen we ons vorige voorbeeld wijzigen door de lente te gebruiken om de driver te injecteren.

Aangezien we op de lente gaan vertrouwen, moeten we spring-context . toevoegen en spring-test naar onze afhankelijkheden in pom.xml .

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.javacodegeeks.testng.spring</groupId>
	<artifactId>testNGSpring</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<dependencies>
		<dependency>
			<groupId>org.seleniumhq.selenium</groupId>
			<artifactId>selenium-java</artifactId>
			<version>2.45.0</version>
		</dependency>
		<dependency>
			<groupId>org.testng</groupId>
			<artifactId>testng</artifactId>
			<version>6.8.8</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>${spring.version}</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
	<properties>
		<spring.version>4.1.5.RELEASE</spring.version>
	</properties>
</project>

Het onderstaande contextbestand bevat de driverbean-definitie. De class attributen aan org.openqa.selenium.firefox.FirefoxDriver .

driver_context.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
				http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
	<bean id="driver" class="org.openqa.selenium.firefox.FirefoxDriver" />
</beans>

De onderstaande testklasse doet precies wat de vorige deed, de enige verandering is dat de bestuurder wordt geïnjecteerd via de annotatie van de lente @ContextConfiguration . De waarde bevat het locatiepad naar het contextbestand driver_context.xml . Het chauffeurslid is voorzien van @Autowired zodat de lente de uitvoering kan injecteren.

Aangezien we gaan vertrouwen op het TestNG-spring-integratieraamwerk, testklasse TestNGSeleniumDriverInjectionExample verlengt AbstractTestNGSpringContextTests .

TestNGSeleniumDriverInjectionExample:

package com.javacodegeeks.testng.selenium;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;


@ContextConfiguration("driver_context.xml")
public class TestNGSeleniumDriverInjectionExample extends AbstractTestNGSpringContextTests {
	@Autowired
	private WebDriver driver;
	
	@BeforeClass
	public void printBrowserUsed() {
		System.out.println("Driver used is: " + driver);
	}

	@Test
	public void searchTestNGInGoogle() {
		final String searchKey = "TestNG";
		System.out.println("Search " + searchKey + " in google");
		driver.navigate().to("http://www.google.com");
		WebElement element = driver.findElement(By.name("q"));
		System.out.println("Enter " + searchKey);
		element.sendKeys(searchKey);
		System.out.println("submit");
		element.submit();
		(new WebDriverWait(driver, 10)).until(new ExpectedCondition() {
			public Boolean apply(WebDriver d) {
				return d.getTitle().toLowerCase()
						.startsWith(searchKey.toLowerCase());
			}
		});
		System.out.println("Got " + searchKey + " results");
	}

	@AfterSuite
	public void quitDriver() throws Exception {
		driver.quit();
	}
}

testngDriverInjection.xml:

<?xml version="1.0" encoding="UTF-8"?>
<suite name="TestNgSeleniumSuite" parallel="false">
	<test name="TestNgSeleniumTest">
		<classes>
			<class
				name="com.javacodegeeks.testng.selenium.TestNGSeleniumDriverInjectionExample" />
		</classes>
	</test>
</suite>

Uitvoer:

[TestNG] Running:
  C:\javacodegeeks_ws\testNGSelenium\src\test\resources\com\javacodegeeks\testng\selenium\testngDriverInjection.xml

Driver used is: FirefoxDriver: firefox on WINDOWS (441cda6b-9e73-4594-b4e8-7134a1623c7d)
Search TestNG in google
Enter TestNG
submit
Got TestNG results

===============================================
TestNgSeleniumSuite
Total tests run: 1, Failures: 0, Skips: 0
===============================================

4. TestNG Selenium datagedreven testvoorbeeld

Stel dat we meerdere zoekopdrachten in Google willen uitvoeren met behulp van onze zoekmethode, dan zouden we elke keer dat we de methode aanroepen verschillende zoekreeksen willen invoeren. In dit voorbeeld zal ik datagedreven testen demonstreren om meerdere zoekopdrachten in Google uit te voeren.

We zullen ons voorbeeld verder aanpassen en een parameter in onze zoekmethode introduceren. Omdat we meerdere keren zoeken, houden we de naam van de zoekmethode algemeen, noem deze searchGoogle() . We zullen de gegevens verstrekken met behulp van een @DataProvider methode genaamd searchStrings() die "TestNG" en "Selenium" als zoektermen retourneert. De @Test annotatie is aangepast en bevat searchGoogle als de dataProvider .

TestNGSeleniumDataDrivenSearchExample:

package com.javacodegeeks.testng.selenium;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

@ContextConfiguration("driver_context.xml")
public class TestNGSeleniumDataDrivenSearchExample extends
		AbstractTestNGSpringContextTests {
	private WebDriver driver;

	@BeforeClass
	public void printBrowserUsed() {
		System.out.println("Driver used is: " + driver);
	}

	@Test(dataProvider = "searchStrings")
	public void searchGoogle(final String searchKey) {
		System.out.println("Search " + searchKey + " in google");
		driver.navigate().to("http://www.google.com");
		WebElement element = driver.findElement(By.name("q"));
		System.out.println("Enter " + searchKey);
		element.sendKeys(searchKey);
		System.out.println("submit");
		element.submit();
		(new WebDriverWait(driver, 10)).until(new ExpectedCondition() {
			public Boolean apply(WebDriver d) {
				return d.getTitle().toLowerCase()
						.startsWith(searchKey.toLowerCase());
			}
		});
		System.out.println("Got " + searchKey + " results");
	}

	@DataProvider
	private Object[][] searchStrings() {
		return new Object[][] { { "TestNG" }, { "Selenium" } };
	}

	@AfterSuite
	public void quitDriver() throws Exception {
		driver.quit();
	}
}

testngDataDrivenSearch.xml:

<?xml version="1.0" encoding="UTF-8"?>
<suite name="TestNgSeleniumSuite" parallel="false">
	<parameter name="browser" value="chrome"></parameter>
	<parameter name="driverPath" value="c://selenium/chromedriver.exe"></parameter>
	<test name="TestNgSeleniumTest">
		<classes>
			<class
				name="com.javacodegeeks.testng.selenium.TestNGSeleniumDataDrivenSearchExample" />
		</classes>
	</test>
</suite>

Als we nu de test uitvoeren, wordt deze twee keer uitgevoerd, een keer voor "TestNG" en vervolgens voor "Selenium".

Uitvoer:

[TestNG] Running:
  C:\javacodegeeks_ws\testNGSelenium\src\test\resources\com\javacodegeeks\testng\selenium\testngDataDrivenSearch.xml

Driver used is: FirefoxDriver: firefox on WINDOWS (ab3f6869-6669-4ccf-8e8f-9479f35aa790)
Search TestNG in google
Enter TestNG
submit
Got TestNG results
Search Selenium in google
Enter Selenium
submit
Got Selenium results

===============================================
TestNgSeleniumSuite
Total tests run: 2, Failures: 0, Skips: 0
===============================================

5. TestNG Selenium Meerdere Browser Voorbeeld

Stel nu dat we onze test op meerdere browsers willen uitvoeren, het enige wat we hoeven te doen is onze initDriver() parametreren methode en geef het de naam door van de browser waarop we onze test willen uitvoeren.

Op basis van de browser maken we ofwel ChromeDriver of FirefixDriver . We zullen de browsernaam doorgeven via testng.xml .

TestNGSeleniumBrowserCfgVoorbeeld:

package com.javacodegeeks.testng.selenium;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Optional;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class TestNGSeleniumBrowserCfgExample {
	private WebDriver driver;	

	@Parameters({"browser", "driverPath"})
	@BeforeTest
	public void initDriver(String browser, @Optional("") String driverPath) throws Exception {
		System.out.println("You are testing on browser " + browser);
		browser = browser.toLowerCase();
		if (!driverPath.equals("")) {
			System.setProperty("webdriver.chrome.driver", driverPath);
		}
		if (browser.equals("chrome")) {			
			driver = new ChromeDriver();
		} else if (browser.equals("firefox")) {
			driver = new FirefoxDriver();
		} else {
			throw new RuntimeException("Please create a driver for " + browser);
		}
	}

	@Test(dataProvider = "searchStrings")
	public void searchGoogle(final String searchKey) {
		System.out.println("Search " + searchKey + " in google");
		driver.navigate().to("http://www.google.com");		
		WebElement element = driver.findElement(By.name("q"));
		System.out.println("Enter " + searchKey);
		element.sendKeys(searchKey);
		System.out.println("submit");
		element.submit();
		 (new WebDriverWait(driver, 10)).until(new ExpectedCondition() {
	            public Boolean apply(WebDriver d) {
	                return d.getTitle().toLowerCase().startsWith(searchKey.toLowerCase());
	            }
	        });
		System.out.println("Got " + searchKey + " results");
	}

	@DataProvider
	private Object[][] searchStrings() {
		return new Object[][] { { "TestNG" }, { "Selenium" } };
	}

	@AfterTest
	public void quitDriver() throws Exception {
		driver.quit();
	}	
}

testng.xml zal twee tests hebben en beide tests zullen dezelfde testklasse uitvoeren. We willen TestNgSeleniumChromeTest om in een Chrome-browser te draaien, dus we hebben de browser . ingesteld parameter naar chrome . Evenzo willen we TestNgSeleniumFirefoxTest om in een Firefox-browser te draaien, zodat de browser is ingesteld op waarde firefox .

testngBrowserConfigurable.xml:

<?xml version="1.0" encoding="UTF-8"?>
<suite name="TestNgSeleniumSuite" parallel="false">
	<test name="TestNgSeleniumChromeTest">
		<parameter name="browser" value="chrome"></parameter>
		<parameter name="driverPath" value="c://selenium/chromedriver.exe"></parameter>
		<classes>
			<class
				name="com.javacodegeeks.testng.selenium.TestNGSeleniumBrowserCfgExample" />
		</classes>
	</test>

	<test name="TestNgSeleniumFirefoxTest">
		<parameter name="browser" value="firefox"></parameter>
		<classes>
			<class
				name="com.javacodegeeks.testng.selenium.TestNGSeleniumBrowserCfgExample" />
		</classes>
	</test>
</suite>

Zoals je hieronder kunt zien, wordt de test voor beide browsers uitgevoerd.

Uitvoer:

[TestNG] Running:
  C:\javacodegeeks_ws\testNGSelenium\src\test\resources\com\javacodegeeks\testng\spring\testngBrowserConfigurable.xml

You are testing on browser chrome
Starting ChromeDriver 2.14.313457 (3d645c400edf2e2c500566c9aa096063e707c9cf) on port 7342
Only local connections are allowed.
Search TestNG in google
Enter TestNG
submit
Got TestNG results
Search Selenium in google
Enter Selenium
submit
Got Selenium results
You are testing on browser firefox
Search TestNG in google
Enter TestNG
submit
Got TestNG results
Search Selenium in google
Enter Selenium
submit
Got Selenium results

===============================================
TestNgSeleniumSuite
Total tests run: 4, Failures: 0, Skips: 0
===============================================

6. TestNG Op selenium gebaseerde tests

Stel dat u bepaalde tests pas wilt uitvoeren nadat een pagina is geladen, dan kunt u ervoor zorgen dat dit gebeurt door de tests afhankelijk te maken van de methode die verantwoordelijk is voor het laden van de pagina.

In het onderstaande voorbeeld openen we http://examples.javacodegeeks.com/ en zoeken vervolgens naar TestNG-artikelen. Zodra de pagina is geladen, zoeken we naar het artikel 'TestNG Maven Project Voorbeeld' en klikken erop.

Dit scenario heeft twee aspecten, het eerste betreft het zoeken naar TestNG-artikelen en het tweede, dat gaat over het klikken op een artikel in de zoekresultaten, komt pas in beeld nadat de zoekresultaten zijn geretourneerd.

Test in de onderstaande klas clickOnJCGTestNGArticle() gaat over het klikken op het artikel 'TestNG Maven Project Voorbeeld', terwijl searchTestNGInJCG() gaat over het zoeken naar TestNG in Java Code Geeks. Sinds clickOnJCGTestNGArticle() hangt af van test searchTestNGInJCG() , we wijzigen @Test annotatie en stel de dependsOnMethod attribuut aan searchTestNGInJCG .

TestNGSeleniumDependentMethodExample:

package com.javacodegeeks.testng.selenium;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;


@ContextConfiguration("driver_context.xml")
public class TestNGSeleniumDependentMethodExample extends AbstractTestNGSpringContextTests {
	@Autowired
	private WebDriver driver;

	@BeforeClass
	public void printBrowserUsed() {
		System.out.println("Driver used is: " + driver);
	}
	
	@Test(dependsOnMethods="searchTestNGInJCG")
	public void clickOnJCGTestNGArticle() {
		System.out.println("You are in page " + driver.getTitle());
		(new WebDriverWait(driver, 10)).until(new ExpectedCondition() {
			public Boolean apply(WebDriver d) {
				WebElement link = driver.findElement(By.linkText("TestNG Maven Project Example"));
				if (link != null) {
					System.out.println("Going to click on '" + link.getText() + "'");
					link.click();
				}
				return link != null;
			}
		});
		assertPageTitle("TestNG Maven Project Example");
	}

	@Test
	public void searchTestNGInJCG() {
		final String searchKey = "TestNG";
		System.out.println("Search " + searchKey + " in JCG");
		driver.navigate().to("http://examples.javacodegeeks.com/");
		(new WebDriverWait(driver, 10)).until(new ExpectedCondition() {
			public Boolean apply(WebDriver d) {
				WebElement popup = d.findElement(By.linkText("Close this popup"));
				if (popup != null) {
					System.out.println("Found popup, close it");
					popup.click();
				}
				return popup != null;
			}
		});
		WebElement element = driver.findElement(By.name("s"));
		System.out.println("Enter " + searchKey);
		element.sendKeys(searchKey);
		System.out.println("submit");		
		element.submit();
		assertPageTitle("You searched for " + searchKey);
		System.out.println("Got " + searchKey + " results");
	}
	
	private void assertPageTitle(final String title) {
		(new WebDriverWait(driver, 10)).until(new ExpectedCondition() {
			public Boolean apply(WebDriver d) {
				System.out.println("TITLE: " + d.getTitle());
				return d.getTitle().toLowerCase()
						.startsWith(title.toLowerCase());
			}
		});
	}

	@AfterSuite
	public void quitDriver() throws Exception {
		driver.quit();
	}
}

testngDependencyTests.xml:

<?xml version="1.0" encoding="UTF-8"?>
<suite name="TestNgSeleniumSuite" parallel="false">
	<test name="TestNgSeleniumTest">
		<classes>
			<class
				name="com.javacodegeeks.testng.selenium.TestNGSeleniumDependentMethodExample" />
		</classes>
	</test>
</suite>

In de onderstaande uitvoer kunt u zien dat er eerst naar 'TestNG'-artikelen wordt gezocht en vervolgens naar het artikel 'TestNG Maven-projectvoorbeeld'.

Uitvoer:

[TestNG] Running:
  C:\javacodegeeks_ws\testNGSelenium\src\test\resources\com\javacodegeeks\testng\selenium\testngDependencyTests.xml

Driver used is: FirefoxDriver: firefox on WINDOWS (07d0226b-8d03-4ec1-8a62-fb7ae09546be)
Search TestNG in JCG
Found popup, close it
Enter TestNG
submit
TITLE: You searched for TestNG | Examples Java Code Geeks
Got TestNG results
You are in page You searched for TestNG | Examples Java Code Geeks
Going to click on 'TestNG Maven Project Example'
TITLE: TestNG Maven Project Example | Examples Java Code Geeks

===============================================
TestNgSeleniumSuite
Total tests run: 2, Failures: 0, Skips: 0
===============================================

Download het Eclipse-project

In dit artikel heb ik u enkele voorbeelden laten zien van TestNG- en Selenium-integratie.

Java-tag