#java #selenium #testng
#java #селен #testng
Вопрос:
Я относительно новичок в selenium webdriver и учусь работать над небольшим кодом с использованием фреймворка TestNG. Мои тестовые примеры
- Войдите в Gmail
- Создание почты
- Отправить и проверить
- Выход
Когда я не использую TestNG, мой код работает нормально, но когда я использую фреймворк TestNG
- После прохождения первого тестового примера происходит сбой.
- Сбой с ошибкой «Не удалось найти элемент»
Вот изображение сообщения об ошибке,
Это мой код
package autoamtionFramework;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.AfterMethod;
import static org.junit.Assert.assertEquals;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class TestNG {
private WebDriver driver;
@BeforeMethod
public void Startup(){
//Initiate driver
driver = new FirefoxDriver();
}
@Test(priority=1)
public void GoogleLogin() throws Exception{
//Go to Gmail
driver.get("http://gmail.com");
assertEquals("Sign in", driver.findElement(By.id("signIn")).getAttribute("value"));
//Maximize the window
driver.manage().window().maximize();
//Clear autofilled and enter username, click next
driver.findElement(By.id("Email")).clear();
driver.findElement(By.id("Email")).sendKeys("********@gmail.com");
driver.findElement(By.id("next")).click();
Thread.sleep(2000);
//Clear pass and enter password, click submit
driver.findElement(By.id("Passwd")).clear();
driver.findElement(By.id("Passwd")).sendKeys("***********");
driver.findElement(By.id("PersistentCookie")).click();
driver.findElement(By.id("signIn")).click();
Thread.sleep(2000);
//verify login is done
System.out.println(driver.getTitle());
Thread.sleep(2000);
}
@Test(priority=2)
public void CreateMail() throws Exception{
//Click on Compose button
driver.findElement(By.xpath("//div[contains(text(),'COMPOSE')]")).click();
Thread.sleep(4000);
//ENter the reciepient mail id
driver.findElement(By.xpath("//textarea[@name='to']")).sendKeys("********@gmail.com");
//Enter Subject
driver.findElement(By.xpath("//input[@name='subjectbox']")).sendKeys("Selenium Test Mail");
//ENter mail body
driver.findElement(By.xpath("//div[@class='Ar Au']//div")).sendKeys("Hi SD");
Thread.sleep(4000);
}
@Test(priority=3)
public void SendVerify() throws Exception
{//Send the email
driver.findElement(By.xpath("//div[contains(text(),'Send')]")).click();
Thread.sleep(4000);
//Go to Sent Items
driver.findElement(By.xpath("//a[@title='Sent Mail']")).click();
//Verify that mail is sent
if (driver.findElement(By.xpath("//div[@class='span']//span[text()='Selenium Test Mail']")) != null)
{
System.out.println("Email is sent successfully");
}
else
{
System.out.println("Error::Email is not sent!!");
}
Thread.sleep(2000);
}
//Logout and close the window
@Test(priority=4)
public void GmailLogout() throws Exception
{
driver.findElement(By.xpath("//a[@class='gb_b gb_db gb_R']")).click();
driver.findElement(By.xpath("//a[contains(text(), 'Sign out')]")).click();
//Verify Login is done
String Title = driver.getTitle();
if ( Title != " ********@gmail.com ")
{
System.out.println("Your Gmail is logged out!!");
}
else
{
System.out.println("Something went wrong. Pls logout manually!!");
}
}
@AfterMethod
public void Exit(){
driver.close();
}
}
Комментарии:
1. Читая только ваши инструкции import, я могу сказать, что вы смешиваете TestNG и JUnit.
2. вам следует попробовать QMetry Automation framework , которая является расширением TestNG selenium , где вам не нужно управлять драйвером
Ответ №1:
Вы инициализируете драйвер @BeforeMethod
, затем открываете страницу в первом тесте, а затем закрываете драйвер @AfterMethod
и переходите ко второму тесту. Измените @AfterMethod
на @AfterClass
.