Ich möchte die Login-Methode verwenden, um bei jedem Test den gleichen Code zu wiederholen. Ich überprüfe ähnliches Thema hier und konnte keine Lösung finden oder es einfach nicht bekommen.So konfigurieren Sie die Login-Methode, um bei jedem Test doppelten Code zu vermeiden [selen] [java]
Test wird von Selenium IDE automatisch generiert, so habe ich mehr Frage über eine Methode dort. Ich werde Dinge markieren, die mich verwirren. Sein mein Test und Verfahren, die ich gemacht:
import java.util.regex.Pattern;
import java.util.concurrent.TimeUnit;
import org.testng.annotations.*;
import static org.testng.Assert.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
public class Sortowanie{
private WebDriver driver;
private String baseUrl;
private boolean acceptNextAlert = true;
private StringBuffer verificationErrors = new StringBuffer();
String[] params;
@BeforeClass(alwaysRun = true)
public void setUp() throws Exception {
driver = new FirefoxDriver();
baseUrl = "https://en-testwebapi.poczta-polska.pl/";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
@Test
public void testSortowanie() throws Exception {
driver.get(baseUrl + "/");
login();
driver.findElement(By.xpath("(//input[@type='search'])[2]")).clear();
driver.findElement(By.xpath("(//input[@type='search'])[2]")).sendKeys("1");
driver.findElement(By.xpath("(//input[@type='search'])[3]")).clear();
driver.findElement(By.xpath("(//input[@type='search'])[3]")).sendKeys("09");
driver.findElement(By.xpath("(//input[@type='search'])[3]")).clear();
driver.findElement(By.xpath("(//input[@type='search'])[3]")).sendKeys("");
driver.findElement(By.xpath("(//input[@type='search'])[4]")).clear();
driver.findElement(By.xpath("(//input[@type='search'])[4]")).sendKeys("21");
driver.findElement(By.xpath("(//input[@type='search'])[4]")).clear();
driver.findElement(By.xpath("(//input[@type='search'])[4]")).sendKeys("");
}
@AfterClass(alwaysRun = true)
public void tearDown() throws Exception {
driver.quit();
String verificationErrorString = verificationErrors.toString();
if (!"".equals(verificationErrorString)) {
fail(verificationErrorString);
}
}
//I want to use params which will be defined in run configuration
public void login(){
driver.findElement(By.id("p")).clear();
driver.findElement(By.id("p")).sendKeys(params[1]);
driver.findElement(By.id("u")).clear();
driver.findElement(By.id("u")).sendKeys(params[0]);
driver.findElement(By.id("submit_button")).click();
}
//Where and when i need to use this method ??
private boolean isElementPresent(By by) {
try {
driver.findElement(by);
return true;
} catch (NoSuchElementException e) {
return false;
}
}
//Where and when i need to use this method ??
private boolean isAlertPresent() {
try {
driver.switchTo().alert();
return true;
} catch (NoAlertPresentException e) {
return false;
}
}
//Where and when i need to use this method ??
private String closeAlertAndGetItsText() {
try {
Alert alert = driver.switchTo().alert();
String alertText = alert.getText();
if (acceptNextAlert) {
alert.accept();
} else {
alert.dismiss();
}
return alertText;
} finally {
acceptNextAlert = true;
}
}
}
So zum Wohle des Friedens ich meine Fragen wiederholen: Wie kann ich Login-Methode machen, die params Wert zu erhalten und wo ich es brauchen zu implementieren? Wie Arbeitsmethode, die ich in Kommentar auf Code oben markieren.
Jede Hilfe wird nützlicher Artikel, Tutorials, ähnlicher Code für die Analyse sein.
Vielen Dank für Beratung
Sie sagen etwas über die Konfigurationsdatei. Es wird eine bessere Idee sein, aber was ich dafür brauche. Create setup.properties setzen Login und übergeben Wert und wie kann ich das verwenden? –
Code funktioniert nicht für mich, aber Sie suggestion über die Konfigurationsdatei war wirklich hilfreich. –
Ich habe meinen Code so geändert, dass er jetzt auf der Konfigurationsdatei läuft. Sie müssen eine XML-Datei als TestNG-Suite ausführen. Auch mein Code funktionierte nicht, weil ich "import.org.openqa.selenium.chrome.ChromeDriver;" vergessen hatte. – Angusiasty