Я изучаю TestNG для селена.Я хочу передать три разных имени пользователя и пароля в @Test, который является сценарием входа в систему.Сценарий таков:
- перейдите на страницу входа
- щелкните поле ввода имени пользователя и введите имя пользователя
- щелкните поле ввода пароля и введите пароль
- нажмите кнопку входа в систему
- нажмите кнопку выхода из системы
- нажмите кнопку "ОК" в предупреждении.
Первый тестполучать прошло.Два других не работают с UnhandledAlertException.
package testNG;
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.ExpectedConditions;
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.Test;
public class testData {
WebDriver driver;
@Test(dataProvider="data")
public void login(String userName, String password) {
driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.get("http://demo.guru99.com/V1/index.php");
WebElement userID = driver.findElement(By.xpath("//input[@name='uid']"));
WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.elementToBeClickable(userID));
userID.sendKeys(userName);
driver.findElement(By.xpath("//input[@name='password']")).sendKeys(password);
driver.findElement(By.xpath("//input[@name='btnLogin']")).click();
driver.findElement(By.xpath("//a[@href='Logout.php']")).click();
driver.switchTo().alert().accept();
driver.quit();
}
@DataProvider(name="data")
public Object[][] getUserData(){
return new Object[][] {
{"mngr137366", "jUgyjAn"},
{"mngr137370", "uvetahA"},
{"mngr137371", "utYmEqY"},
};
}
}
Обновление: с обработкой оповещения и удалением жестко запрограммированного имени пользователя код теперь работает нормально.Но браузер открывается три раза для трех входов.Я хочу, чтобы он открылся один раз и выполнил три входа.Для этого я добавил следующий код:
@BeforeClass
public void setUp() {
driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.get("http://demo.guru99.com/V1/index.php");
}
, и то же самое было удалено из функции login ().Теперь первый вход успешен.Остальные два логина оставлены.
Общий код:
public class testData {
//public static void main(String[] args) {
// TODO Auto-generated method stub
WebDriver driver;
@BeforeClass
public void setUp() {
driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.get("http://demo.guru99.com/V1/index.php");
}
@Test(dataProvider="data")
public void login(String userName, String password) {
WebElement userID = driver.findElement(By.xpath("//input[@name='uid']"));
WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.elementToBeClickable(userID));
userID.sendKeys(userName);
driver.findElement(By.xpath("//input[@name='password']")).sendKeys(password);
driver.findElement(By.xpath("//input[@name='btnLogin']")).click();
driver.findElement(By.xpath("//a[@href='Logout.php']")).click();
WebDriverWait waitAlert = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.alertIsPresent());
driver.switchTo().alert().accept();
WebDriverWait wait1 = new WebDriverWait(driver, 20);
wait1.until(ExpectedConditions.elementToBeClickable(userID));
}
@DataProvider(name="data")
public Object[][] getUserData(){
return new Object[][] {
{"mngr137366", "jUgyjAn"},
{"mngr137370", "uvetahA"},
{"mngr137371", "utYmEqY"},
};
}
}