Я тестер селена + testng в разработке.У меня есть этот проект codeigniter.Мне нужно проверить навигацию.
Что у меня сейчас.Я протестировал скрипт для сайта.но здесь я пытаюсь запустить второй скрипт, и он снова входит в систему.Я не могу винить разработчиков.Но проблема в том, как войти в систему каждый раз, используя селен в тестовых случаях.
======================= ФАЙЛ 1 КЛАСС: общий ========================
package common;
/**
*
* @author Aruns
*/
public class common extends config {
public common() {
}
}
===================== КЛАСС ФАЙЛА 2: config ====================================================== Это файл конфигурации ==========================
package common;
/**
*
* @author Aruns
*/
public class config {
private final String base_url = "http://localhost/hospitalnew";
private int timeout = 10;
private String browser = "chrome";
private final String chromeDriver = "C:\\xampp\\htdocs\\driver\\driver\\chromedriver.exe";
private final String geckoDriver = "C:\\xampp\\htdocs\\driver\\driver\\firefoxdriver.exe";
private final String ieDriver = "C:\\xampp\\htdocs\\driver\\driver\\operadriver.exe";
private String currentUrl = "";
private String currentTitle = "";
private String username = "arun-reception";
private String password = "arun";
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getCurrentUrl() {
return currentUrl;
}
public void setCurrentUrl(String currentUrl) {
this.currentUrl = currentUrl;
}
public String getCurrentTitle() {
return currentTitle;
}
/**
* sets current Title
*
* @param currentTitle = url
*/
public void setCurrentTitle(String currentTitle) {
this.currentTitle = currentTitle;
}
public String getChromeDriver() {
return chromeDriver;
}
public String getGeckoDriver() {
return geckoDriver;
}
public String getIeDriver() {
return ieDriver;
}
public String getBrowser() {
return browser;
}
public void setBrowser(String browser) {
this.browser = browser;
}
public String getBase_url() {
return base_url;
}
public int getTimeout() {
return timeout;
}
public void setTimeout(int timeout) {
this.timeout = timeout;
}
}
======================= КЛАСС ФАЙЛА 3: TestNavigationMenu ==================
package critical;
import common.common;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import static org.testng.Assert.*;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
/**
*
* @author Aruns
*/
public class TestNavigationMenu {
public TestNavigationMenu() {
}
// TODO add test methods here.
// The methods must be annotated with annotation @Test. For example:
//
// @Test
// public void hello() {}
WebDriver driver;
common common;
WebElement element;
@BeforeClass
public static void setUpClass() throws Exception {
}
@AfterClass
public static void tearDownClass() throws Exception {
}
@BeforeMethod
public void setUpMethod() throws Exception {
common = new common();
System.setProperty("webdriver.chrome.driver", common.getChromeDriver());
driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(common.getTimeout(), TimeUnit.SECONDS);
}
@AfterMethod
public void tearDownMethod() throws Exception {
driver.close();
}
public void automatedlogin() throws Exception {
String title = "Hospital Software ";
String url = "http://localhost/hospitalnew/appointment/appointments";
TestNavigationMenu object = new TestNavigationMenu();
object.setUpMethod();
driver.navigate().to(url);
driver.manage().window().maximize();
driver.navigate().to("http://localhost/hospitalnew/login");
driver.manage().window().maximize();
element = driver.findElement(By.name("txtUserName__"));
element.sendKeys(common.getUsername());
element = driver.findElement(By.name("txtPass__"));
element.sendKeys(common.getPassword());
element = driver.findElement(By.name("submit"));
element.click();
}
@Test(priority = 1)
public void login() throws Exception {
String title = "Hospital Software ";
String url = "http://localhost/hospitalnew/appointment/appointments";
TestNavigationMenu object = new TestNavigationMenu();
object.setUpMethod();
driver.navigate().to(url);
driver.manage().window().maximize();
driver.navigate().to("http://localhost/hospitalnew/login");
driver.manage().window().maximize();
element = driver.findElement(By.name("txtUserName__"));
element.sendKeys(common.getUsername());
element = driver.findElement(By.name("txtPass__"));
element.sendKeys(common.getPassword());
element = driver.findElement(By.name("submit"));
element.click();
if (driver.getTitle().equals(title)) {
assertTrue(driver.getCurrentUrl().equals(url));
}
object.tearDownMethod();
}
// test case 3
@Test(priority = 2)
public void isWorkingMastersDepartment() throws Exception {
String title = "Hospital Software Department";
String url = "http://localhost/hospitalnew/department/page";
automatedlogin();
driver.navigate().to(url);
driver.manage().window().maximize();
element = driver.findElement(By.className("dropdown-toggle"));
element.click();
element = driver.findElement(By.className("dropdown-toggle"));
element.click();
if (driver.getTitle().equals(title)) {
assertTrue(driver.getCurrentUrl().equals(url));
}
}
}
Я хотел создать функцию (автоматический вход в систему), а затем вызывать ее каждый раз.Но проблема в том.Хром является интенсивным.открытие большого количества окон и не закрытие может в конечном итоге вызвать проблемыКак вызвать object.close () для каждого запуска testng + тестовые сценарии селена?
Во-вторых, я хотел бы расширить общий сценарий входа в систему.Но я не знаю, будет ли он работать правильно. Пожалуйста, укажите мне. В правильном направлении.
И, пожалуйста, оцените мой код, если он был хорош для чтения и оптимизирован!
Спасибо ~Arun