У меня возникли проблемы с тестированием автоматизации. У меня в Eclipse IDE около 50 тестовых случаев. Все тесты в разных классах. Кроме того, у меня есть один BaseClass, который содержит @beforeclass и @afterclass. В @beforeclass открывается браузер, открывается URL-адрес и URL-адрес веб-сайта, а затем выполняется процедура входа в систему. Тогда мои тесты работают. Все они начинаются с аннотации @Test. Я связываю их с помощью TestNG Suite. Базовый класс: Мой класс BaseClass.java Класс MyBaseClass.java TestNg: My Suite Пример теста(Класс): Мой пример теста (класс)
Вот мой вопрос: я хочу использовать приоритет (например, @Test (priority = 1)) для этих классов (тестовых случаев)для сокращения рабочей силы. Но когда есть проблема с моими кодами;мой тест автоматизации останавливается. Я хочу, это будет продолжаться, кроме остановки.
Второй вариант - использование TestNG. TestNG в порядке, но в каждом случае открывается браузер. Как создать тест, например, открыть один браузер и запустить все тестовые случаи в этом браузере?
Кстати, вот мой пример теста для вашей полной картины:
- @ beforeclass: открыть браузер - открыть URL - логин
@ test1: перейти к продуктамЭкран - нажмите «Создать продукт» - создайте продукт с начальным количеством - затем нажмите кнопку «Сохранить», он снова должен появиться на экране продуктов.
@ test2: нажмите кнопку «Создать продукт» еще раз. - создать товар без начального количества - нажмите кнопку «Сохранить», в нем должна появиться ошибка. нажмите кнопку отмены, чтобы продолжить третий @ тест
@ тест3: так далее ...
- @ дополнительный класс: закрыть браузер
Я очень благодарен за вашу помощь! Спасибо!
Редактировать: Я переключил свои коды следующим образом. Потому что я не хочу, чтобы моя автоматизация снова и снова открывала новый браузер. Все мои тесты связаны только с одним экраном. (продукты) Все, что я хочу, это заказать:
- Инициировать @BeforeSuite (открыть браузер, URL-адрес ..)
- Инициировать @BeforeClass (перейти на экран "Продукты"- потому что это общий экран для всех случаев)
- Инициировать @Test для тестового примера 1
- Инициировать @AfterClass (снова перейти на экран "Продукты" для соединения с тестовым примером 2
- Инициируйте @Test для контрольного примера 2
Мой класс теста NG:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="AllTests" verbose="10" >
<test name="prcr1.1" >
<classes>
<class name="com.example.product.prcr1dot1" />
</classes>
</test>
<test name="prcr1.2" >
<classes>
<class name="com.example.product.prcr1dot2" />
</classes>
</test>
</suite>
Мой базовый класс:
public class BaseClass {
protected WebDriver driver;
@BeforeSuite
public void openMyexample() throws InterruptedException {
System.out.println("Initiate LoginTest Test...");
driver = utilities.DriverFactory.open("chrome");
driver.manage().window().maximize();
driver.get("https://mystage.example.com/en/public/login/?isTestAutomationLive=true");
System.out.println("example Page Has Been Opened..");
WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.elementToBeClickable((By.name("email"))));
// Enter Username Section
WebElement username = driver.findElement(By.name("email"));
username.sendKeys("automationproducts4@example.com");
Thread.sleep(1000);
wait.until(ExpectedConditions.elementToBeClickable((By.name("password"))));
// Enter Password Section
WebElement password = driver.findElement(By.name("password"));
password.sendKeys("Test*01");
Thread.sleep(1000);
wait.until(ExpectedConditions.elementToBeClickable((By.xpath("//form[@id='frmLogin']/button"))));
// Click Login Button
WebElement logInButton = driver.findElement(By.xpath("//form[@id='frmLogin']/button"));
logInButton.click();
// PAGE LOADER
wait.until(ExpectedConditions.elementToBeClickable((By.xpath("//span[contains(.,'×')]"))));
Thread.sleep(1000);
// Integration Message Function WebElement - Option 1: WebElement
WebElement popupCancelButton = driver.findElement(By.xpath("//span[contains(.,'×')]"));
popupCancelButton.click();
Thread.sleep(3000);
}
@BeforeClass
public void openProducts() throws InterruptedException {
WebDriverWait wait = new WebDriverWait(driver, 20);
// From Dashboard Section to Product Section
wait.until(ExpectedConditions.elementToBeClickable((By.xpath("//a[contains(text(),'Products')]"))));
WebElement productButton = driver.findElement(By.xpath("//a[contains(text(),'Products')]"));
productButton.click();
Thread.sleep(4000);
wait.until(ExpectedConditions.elementToBeClickable((By.xpath("//button[contains(.,'Create Product')]"))));
WebElement createProductButton = driver.findElement(By.xpath("//button[contains(.,'Create Product')]"));
createProductButton.click();
Thread.sleep(4000);
}
@AfterClass
public void closeProducts() throws InterruptedException {
WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.elementToBeClickable((By.xpath("//a[contains(text(),'Products')]"))));
WebElement productButton = driver.findElement(By.xpath("//a[contains(text(),'Products')]"));
productButton.click();
Thread.sleep(4000);
}
@AfterSuite
public void closeMyexample() throws InterruptedException {
WebDriverWait wait = new WebDriverWait(driver, 60);
Thread.sleep(4000);
// Sign Out Thread.sleep(5000);
wait.until(ExpectedConditions.elementToBeClickable((By.xpath("//div[2]/i"))));
WebElement logoutScrollDownButton = driver.findElement(By.xpath("//div[2]/i"));
logoutScrollDownButton.click();
Thread.sleep(3000);
WebElement signoutButton = driver.findElement(By.xpath("//a[contains(.,'Sign Out')]"));
signoutButton.click();
// Close Browser
System.out.println("Your Test Has Been Ended Successfully.");
Thread.sleep(1000);
System.out.println("Your Test is going to Close..");
driver.quit();
}
// Sleep Function
private void sleep(long m) {
try {
Thread.sleep(m);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Мой контрольный пример 1:
пакет com.example.product;
import utilities.BaseClass;
//Test Case 1: PRCR - 1.1
//Creating a new product with a unique SKU
public class prcr1dot1 extends BaseClass {
@Test
public void prcr1dot1() throws InterruptedException {
WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.elementToBeClickable((By.name("sku"))));
String uuid = UUID.randomUUID().toString();
driver.findElement(By.name("sku")).sendKeys(uuid);
driver.findElement(By.name("name")).sendKeys(uuid);
WebElement packType = driver
.findElement(By.xpath("//kendo-dropdownlist[@id='packTypeName']//span[@class='k-input']"));
packType.click();
wait.until(ExpectedConditions.elementToBeClickable((By.xpath(
"/html//platform-root/kendo-popup[@class='k-animation-container k-animation-container-shown']//input"))));
driver.findElement(By.xpath(
"/html//platform-root/kendo-popup[@class='k-animation-container k-animation-container-shown']//input"))
.sendKeys(uuid);
wait.until(ExpectedConditions.elementToBeClickable((By.id("btnCreateProductPackTypeName"))));
WebElement createPackType = driver.findElement(By.id("btnCreateProductPackTypeName"));
createPackType.click();
wait.until(ExpectedConditions.elementToBeClickable((By.xpath("//button[contains(.,'SAVE')]"))));
WebElement productSaveButton = driver.findElement(By.xpath("//button[contains(.,'SAVE')]"));
productSaveButton.click();
Thread.sleep(8000);
}
}
Мой контрольный пример 2:
import utilities.BaseClass;
public class prcr1dot2 extends BaseClass {
// Test Case 2: PRCR - 1.2
// Creating a new product with the used SKU
@Test
public void prcr1dot2() throws InterruptedException {
WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.elementToBeClickable((By.name("sku"))));
driver.findElement(By.name("sku")).sendKeys("SKU08");
String uuid = UUID.randomUUID().toString();
driver.findElement(By.name("name")).sendKeys(uuid);
WebElement packType = driver
.findElement(By.xpath("//kendo-dropdownlist[@id='packTypeName']//span[@class='k-input']"));
packType.click();
wait.until(ExpectedConditions.elementToBeClickable((By.xpath(
"/html//platform-root/kendo-popup[@class='k-animation-container k-animation-container-shown']//input"))));
driver.findElement(By.xpath(
"/html//platform-root/kendo-popup[@class='k-animation-container k-animation-container-shown']//input"))
.sendKeys(uuid);
wait.until(ExpectedConditions.elementToBeClickable((By.id("btnCreateProductPackTypeName"))));
WebElement createPackType = driver.findElement(By.id("btnCreateProductPackTypeName"));
createPackType.click();
JavascriptExecutor jsx = (JavascriptExecutor) driver;
jsx.executeScript("window.scrollBy(0,450)", "");
WebElement productSaveButton = driver.findElement(By.xpath("//button[contains(.,'SAVE')]"));
productSaveButton.click();
Thread.sleep(5000);
wait.until(ExpectedConditions.elementToBeClickable((By.xpath("//button[contains(.,'Create Product')]"))));
WebElement createProductButton2 = driver.findElement(By.xpath("//button[contains(.,'Create Product')]"));
createProductButton2.click();
wait.until(ExpectedConditions.elementToBeClickable((By.name("sku"))));
driver.findElement(By.name("sku")).sendKeys("SKU08");
String uuid2 = UUID.randomUUID().toString();
driver.findElement(By.name("name")).sendKeys(uuid2);
WebElement packType2 = driver
.findElement(By.xpath("//kendo-dropdownlist[@id='packTypeName']//span[@class='k-input']"));
packType2.click();
wait.until(ExpectedConditions.elementToBeClickable((By.xpath(
"/html//platform-root/kendo-popup[@class='k-animation-container k-animation-container-shown']//input"))));
String uuid3 = UUID.randomUUID().toString();
driver.findElement(By.xpath(
"/html//platform-root/kendo-popup[@class='k-animation-container k-animation-container-shown']//input"))
.sendKeys(uuid3);
wait.until(ExpectedConditions.elementToBeClickable((By.id("btnCreateProductPackTypeName"))));
WebElement createPackType2 = driver.findElement(By.id("btnCreateProductPackTypeName"));
createPackType2.click();
/*
* WebElement productSaveButton2 =
* driver.findElement(By.xpath("//button[contains(.,'SAVE')]"));
* productSaveButton2.click(); Thread.sleep(5000); WebElement
* productCancelButton2 =
* driver.findElement(By.xpath("//button[contains(.,'CANCEL')]"));
* productCancelButton2.click(); Thread.sleep(2000);
* wait.until(ExpectedConditions.elementToBeClickable((By.xpath(
* "//button[contains(.,'YES')]")))); WebElement productCancelYesButton =
* driver.findElement(By.xpath("//button[contains(.,'YES')]"));
* productCancelYesButton.click();
*/
}
}