beendet Ich lerne Selenium WebDriver in Java zusammen mit TestNG. Ich teste mit der Google-Anmeldeseite.Wie laufen Test erst nach dem @AftertTest
Ich habe Probleme mit der Reihe von Testfällen ausgeführt wird. Was ich tun möchte, ist:
- Run @BeforeTest
- Run Test Nummer 1 (Anmeldung erfolgreich)
- Run @AfterTest (Schließen Sie den Browser und Fahrer)
- Warten Sie, bis das AfterTest Methode ist fertig dann
Prüfnummer 2 (Anmeldung Fail) laufen Aber was ich erlebt habe ist:
- Run @BeforeTest
- Run Test Nummer 1 (Anmeldung erfolgreich)
- Run Test Nummer 2 direkt nach dem Test Nummer 1 beendet ist (Browser nicht geschlossen ist und Login-Zustand wird von vorherigem Test gehalten
- AfterTest ist laufen
I 2 Tage damit verbracht, konnte aber nicht verstehen, wie. Mein Code unten:
========================================== =======================
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.testng.Assert;
import org.testng.annotations.*;
public class GoogleAccountLogin {
WebDriver driver;
@BeforeTest
public void setUp() {
System.setProperty("webdriver.gecko.driver","F:\\path\\geckodriver.exe");
driver=new FirefoxDriver();
}
@Test(priority=0)
public void LoginSuccessful() throws InterruptedException {
// Go to google account
driver.manage().window().maximize();
driver.get("https://accounts.google.com");
Thread.sleep(3000);
// Check if the page is correct
String currentTitle = driver.getTitle();
Assert.assertEquals(currentTitle, "Sign in - Google Accounts");
// Enter email and submit
WebElement email = driver.findElement(By.id("Email"));
email.clear();
email.sendKeys("validemail");
WebElement Next = driver.findElement(By.id("next"));
Next.click();
Thread.sleep(1000);
// Enter password
WebElement password = driver.findElement(By.id("Passwd"));
password.clear();
password.sendKeys("validpassword");
WebElement Login = driver.findElement(By.id("signIn"));
Login.click();
Thread.sleep(5000);
// Check if login successful
currentTitle = driver.getTitle();
Assert.assertEquals(currentTitle, "My Account");
}
@Test(priority=1)
public void LoginFailInvalidEmail() throws InterruptedException {
// Go to google account
driver.manage().window().maximize();
driver.get("https://accounts.google.com");
Thread.sleep(3000);
// Check if the page is correct
String currentTitle = driver.getTitle();
Assert.assertEquals(currentTitle, "Sign in - Google Accounts");
// Enter email and submit
WebElement email = driver.findElement(By.id("Email"));
email.clear();
email.sendKeys("falseemail");
WebElement Next = driver.findElement(By.id("next"));
Next.click();
Thread.sleep(1000);
// Check error message and login state
String errorMess = driver.findElement(By.id("errormsg_0_Email")).getText();
Assert.assertEquals(errorMess, "Sorry, Google doesn't recognize that email.");
currentTitle = driver.getTitle();
Assert.assertEquals(currentTitle, "Sign in - Google Accounts");
}
@AfterTest
public void tearDown() {
driver.close();
driver.quit();
}
}
Ja, das ist richtig. Ich habe getestet und es hat funktioniert. OMG, wie zur Hölle das Tutorial gesagt hat, dass der BeforeTest vor jedem ** @Test>.