Вызовите object.close () после запуска сценария входа в систему как?вызов функции внутри теста - PullRequest
0 голосов
/ 01 октября 2018

Я тестер селена + 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

...