Как я могу создать несколько функций в Selenium + C # для тестовых случаев одной страницы входа - PullRequest
0 голосов
/ 10 мая 2018

Например: - У меня есть страница входа с именем пользователя и паролем.и их 10 тестовых случаев в моей памяти, так как я могу написать свой сценарий, используя функцию для этих 10 тестовых случаев.

1 Ответ

0 голосов
/ 10 мая 2018

Вам следует выбрать Тестирование на основе данных.

Почему:

Существует ряд наборов данных, которые мы должны запуститьте же тесты на.И создание отдельного теста для каждого набора данных требует много времени и неэффективно.

Тестирование на основе данных преодолевает эту проблему, сохраняя данные внешними для функциональных тестов и загружая их при наличиинеобходимо продлить автоматизацию испытаний.

Использование TestNG :

  1. TestNG - это платформа, которая делает возможным автоматизированное тестирование на основе данных в Selenium.
  2. Он имеет некоторые дополнительные ключевые функции, такие как параметризация, параллельное выполнение теста и т. Д.

Вот полная реализация из данных ведомый тестирование .

Для этого я использовал gmail ( С 5 наборами тестовых данных ):

public class Sumit{

    WebDriver driver;
    WebDriverWait wait;

    @BeforeMethod
    public void setUpClass(){
        System.setProperty("webdriver.chrome.driver", "F:\\Automation\\chromedriver.exe");
        driver = new ChromeDriver();
        wait = new WebDriverWait(driver,30); 
        driver.manage().window().maximize();
        driver.get("https://www.google.com/");
    }

    @Test(dataProvider="testdata")
    public void testLogin(String userName,String password) throws Exception {
        wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[text()='Sign in']")));
        driver.findElement(By.xpath("//a[text()='Sign in']")).click();
        driver.findElement(By.xpath("//input[@aria-label='Email or phone']")).sendKeys(userName);
        wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//span[text()='Next']/ancestor::div[@id='identifierNext']")));
        driver.findElement(By.xpath("//span[text()='Next']/ancestor::div[@id='identifierNext']")).click();
        driver.findElement(By.xpath("//input[@aria-label='Enter your password']")).sendKeys(password);
        Thread.sleep(2000);
        driver.findElement(By.xpath("//span[text()='Next']/ancestor::div[@id='passwordNext']")).click();
        wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[contains(text(),'Wrong password. Try again or click Forgot password to reset it.')]")));
        String errorText = driver.findElement(By.xpath("//div[contains(text(),'Wrong password. Try again or click Forgot password to reset it.')]")).getText();
        System.out.println(errorText);
    }

    @DataProvider(name = "testdata")
    public Object[][] gmailData() {
     return new Object[][] {
       { "abc123@gmail.com", "yourpassowrd"},
       { "abc1234@gmail.com", "yourpassowrd"},
       {"abc12345@gmail.com","yourpassowrd"},
       {"abc12346@gmail.com","yourpassowrd"},
       {"abc12347@gmail.com","yourpassowrd"},
     };
    }


    @AfterMethod
    public void tearDown() throws Exception {
        Thread.sleep(3000);
        driver.close();   
      } 
}

PS :1. Я не очень хорош в C #, поэтому я написал код на Java, то же самое вы можете сопоставить с C #.

Для получения дополнительной информации вы можете просмотреть документацию TestNG : Документация TestNG

Вы можете использовать файлы CSV, файлы Excelи Базы данных для тестирования на основе данных, однако предоставленное мной решение не использует ни один из них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...