Есть ли способ использовать testNG с WebDriver для тестирования данных? - PullRequest
1 голос
/ 17 августа 2011

Я успешно создал управляемую данными инфраструктуру с селеном 1 и пытаюсь сделать то же самое с использованием селена 2 (WebDriver).Я делал некоторые основные R и D. Мой код такой, как показано ниже.

import java.util.regex.Pattern;
import java.util.concurrent.TimeUnit;
import org.junit.*;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
import org.testng.annotations.*;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

import java.io.File;
import jxl.*;

@SuppressWarnings("unused")
public class FirstTestusingWebDriver {
private WebDriver driver;
private String baseUrl="http://www.google.co.in";
private StringBuffer verificationErrors = new StringBuffer();
@BeforeClass
public void setUp() throws Exception {
    driver = new FirefoxDriver();
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
@DataProvider(name="DP")
Object[] createData(){
    String[] testData = {"Cheese", "Sudeep"};
    System.out.println("Data is getting created");
    return testData;
}

@Test(dataProvider="DP")
public void testUntitled(String testData) throws Exception {
    driver.get("http://www.google.co.in/");
    driver.findElement(By.id("lst-ib")).clear();
    driver.findElement(By.id("lst-ib")).sendKeys(testData);
    driver.findElement(By.name("btnG")).click();
    driver.findElement(By.linkText("Cheese - Wikipedia, the free encyclopedia")).click();
}

@AfterClass
public void tearDown() throws Exception {
    driver.quit();
    String verificationErrorString = verificationErrors.toString();
    if (!"".equals(verificationErrorString)) {
        fail(verificationErrorString);
    }
}

private boolean isElementPresent(By by) {
    try {
        driver.findElement(by);
        return true;
    } catch (NoSuchElementException e) {
        return false;
    }
}

}

Но с этим кодом тест не запускается.Firefox открывается и закрывается во время выполнения теста как testNG.Может кто-нибудь предложить правильный способ сделать это или как сделать эту работу.

1 Ответ

2 голосов
/ 24 августа 2011

просто внесите небольшое изменение в ur createData (), т.е.

import java.util.regex.Pattern;
import java.util.concurrent.TimeUnit;
import org.junit.*;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
import org.testng.annotations.*;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

import java.io.File;


@SuppressWarnings("unused")
public class FirstTestusingWebDriver {
private WebDriver driver;
private String baseUrl="http://www.google.co.in";
private StringBuffer verificationErrors = new StringBuffer();
@BeforeClass
public void setUp() throws Exception {
    driver = new FirefoxDriver();
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
@DataProvider(name="DP")
Object[][] createData(){
    String[] testData = {"Cheese", "Sudeep"};
    System.out.println("Data is getting created");
    return new Object[][]{{testData[0]+testData[1]}};
}

@Test(dataProvider="DP")
public void testUntitled(String testData) throws Exception {
    driver.get("http://www.google.co.in/");
    driver.findElement(By.id("lst-ib")).clear();

    driver.findElement(By.id("lst-ib")).sendKeys(testData);
    driver.findElement(By.name("btnG")).click();
    //driver.findElement(By.linkText("Cheese - Wikipedia, the free encyclopedia")).click();
}

@AfterClass
public void tearDown() throws Exception {
    //driver.quit();
    String verificationErrorString = verificationErrors.toString();
    if (!"".equals(verificationErrorString)) {
        fail(verificationErrorString);
    }
}

private boolean isElementPresent(By by) {
    try {
        driver.findElement(by);
        return true;
    } catch (NoSuchElementException e) {
        return false;
    }
}}

теперь будет работать нормально ..

...