簡體   English   中英

在同一個瀏覽器中運行所有測試

[英]Running all tests in the same browser webdriver testng

目前,我已經進行了測試,每個類都實例化其自己的瀏覽器。 每個課程都基於我要測試的頁面。 現在,我希望所有測試都可以在一個瀏覽器中運行。 Mu代碼具有當前設置。 我有一個繼承通用方法的基本頁面,然后有一個java.class用於特定頁面的方法,后跟一個test.class來運行我的測試。

public class BasePage {

@FindBy(id = "j_username") WebElement field_Username;
@FindBy(id = "j_password") WebElement field_Password;
@FindBy(name = "login") WebElement button_Login;

public WebDriver driver;
public WebDriverWait wait;

protected JavascriptExecutor jsExecutor;

public String PAGE_URL;
public String PAGE_TITLE;

public BasePage(WebDriver driver){
    this.driver = driver;
    jsExecutor = ((JavascriptExecutor) driver);
    wait = new WebDriverWait(driver, 200);
}

public void loadPage(){

    driver.get(getPageUrl());
    driver.manage().window().maximize();
    for(int i=0; i<2; i++){ 
        driver.findElement(By.tagName("html")).sendKeys(Keys.chord(Keys.CONTROL, Keys.SUBTRACT));
        } 
}

protected void login(String username, String password){
    findDynamicElement(By.id("j_username") , 7);
    setText_Login(username);
    setText_PasswordLogin(password);
    clickLoginMain();
}

public class CreateBillingRange  extends BasePage {

    @FindBy(id = "j_username") WebElement field_Username;
    @FindBy(id = "j_password") WebElement field_Password;
    @FindBy(name = "login") WebElement button_Login;
    @FindBy(id = "add_label") WebElement button_AddLabel;
    @FindBy(linkText = "Policy") WebElement field_Policy;
    @FindBy(linkText = "SPCM") WebElement field_SPCM;
    @FindBy(linkText = "Billing Range") WebElement field_BR;
    @FindBy(id = "addChargingProfile_label") WebElement button_addChargingProfile;
    @FindBy(name = "addBillingNumberRange") WebElement button_addBillingNumberRange;
    @FindBy(id = "startRange") WebElement field_StartRange; 
    @FindBy(id = "endRange") WebElement field_EndRange; 
    @FindBy(id = "name") WebElement field_Name;
    @FindBy(name = "saveBillingNumberRange") WebElement button_SaveBillingNumberRange;

    @FindBy(id = "number") WebElement field_NumberSearch;
    @FindBy(name = "search") WebElement field_Submit;
    @FindBy(name = "ids") WebElement checkbox_Number;
    @FindBy(name = "deleteBillingNumberRange") WebElement button_Delete;
    @FindBy(id = "okDialogButton_label") WebElement okDialogButton_label;



    public CreateBillingRange(WebDriver driver) {
        super(driver);
        this.PAGE_URL = "http://xxxxx:xxx/page";
    }

    public void login(String username, String password){
        findDynamicElement(By.id("j_username") , 7);
        setText_Login(username);
        setText_PasswordLogin(password);
        clickLoginMain();
    }

    public void setText_Login(String text){
        setElementText(field_Username, text);
    }


    public void setText_PasswordLogin(String text){
        setElementText(field_Password, text);
    }

    public void clickLoginMain(){
        clickElement(button_Login);
    }

    public void click_SignUpButton(){
        clickElement(button_Login);
    }

    public void openCharging() {

        findDynamicElement(By.linkText("Policy") , 19);
        clickElement(field_Policy);
        clickElement(field_SPCM);
        clickElement(field_BR);

    }   

    public void addBillingRange(String start, String end){
        findDynamicElement(By.name("addBillingNumberRange"), 10);
        clickElement(button_addBillingNumberRange);
        findDynamicElement(By.id("startRange"), 3);
        setElementText(field_StartRange, start);
        setElementText(field_EndRange, end);
        clickElement(button_SaveBillingNumberRange);
        findDynamicElement(By.id("successMessages") , 5);
    }

    public void deleteBillingRange(String BillingRange){
        findDynamicElement(By.name("search"),20);
        field_NumberSearch.click();
        field_NumberSearch.sendKeys(BillingRange);
        field_Submit.click();
        findDynamicElement(By.name("ids"),20);
        checkbox_Number.click();
        button_Delete.click();
        accpetConfirmSuccess();

    }




public class CreateBundle  extends BasePage{

    @FindBy(id = "j_username") WebElement field_Username;
    @FindBy(id = "j_password") WebElement field_Password;
    @FindBy(name = "login") WebElement button_Login;
    @FindBy(id = "add_label") WebElement button_AddLabel;
    @FindBy(linkText = "Policy") WebElement field_Policy;
    @FindBy(linkText = "SPCM") WebElement field_SPCM;
    @FindBy(linkText = "Plan Mgmt") WebElement field_PlanMgmt;
    @FindBy(linkText = "Bundles") WebElement field_Bundles;
    @FindBy(id = "addOcsButton_label") WebElement button_addOCS;
    @FindBy(id = "alias") WebElement field_alias;
    @FindBy(id = "value") WebElement field_value;
    @FindBy(id = "submitActionButton_label") WebElement button_OCSsave; 
    @FindBy(id = "add") WebElement button_addLabel;
    @FindBy(id = "dataPlanName") WebElement field_DataPlan;
    @FindBy(id = "addComboPackServiceButton_label") WebElement button_addComboService;
    @FindBy(id = "amount") WebElement field_amount;
    @FindBy(id = "ocsAccountReference") WebElement field_OCSAccount;
    @FindBy(id = "days") WebElement field_Days;
    @FindBy(id = "submitActionButton_label") WebElement button_SubmitAction;
    @FindBy(id = "save_label") WebElement button_BundleSave;

    @FindBy(id = "dataPlanName") WebElement field_OCSSearch;
    @FindBy(id = "search_label") WebElement field_OCSSubmit;
    @FindBy(name = "ids") WebElement checkbox_OCS;
    @FindBy(id = "delete_label") WebElement button_DeleteOCS;
    @FindBy(xpath = "/html/body/div/div[2]/div[1]/form/fieldset[3]/div[2]/table/tbody/tr[4]/td[1]/input") WebElement field_OCSDelete;
    @FindBy(id = "deleteOcsRef_label") WebElement button_deleteOCS;


    public CreateBundle(WebDriver driver) {
        super(driver);
        this.PAGE_URL = "http://xxxxx.xxx.x/page";
    }


    public void openBundle() {

        findDynamicElement(By.linkText("Policy") , 19);
        clickElement(field_Policy);
        clickElement(field_SPCM);
        clickElement(field_PlanMgmt);
        clickElement(field_Bundles);

    }   

public class BillingRange_Test {


    public WebDriver driver;
    public WebDriverWait wait;
    CreateBillingRange CreateBillingRange;


    @BeforeClass(alwaysRun = true)
    public void setup() throws MalformedURLException{
        DesiredCapabilities capabilities = DesiredCapabilities.firefox();
        capabilities.setBrowserName("firefox");
        this.driver = new RemoteWebDriver(new URL("http://192.168.1.237:5556/wd/hub"), capabilities);
        wait = new WebDriverWait(driver, 10);
        CreateBillingRange = PageFactory.initElements(driver, CreateBillingRange.class );
    }

    @AfterClass(alwaysRun = true)
    public void teardown(){
        this.driver.quit();
    }


    @BeforeTest
    public void testSignUpMainPage(){
        CreateBillingRange.loadPage();
        CreateBillingRange.login("super","5tg7uj6yh");

    }

    @Test(priority=1,retryAnalyzer=Retry.class)
    public void addBillingRange(){
        CreateBillingRange.openCharging();
        CreateBillingRange.addBillingRange("8800088","1111111111");

    }


public class Bundle_Test {


    public WebDriver driver;
    public WebDriverWait wait;
    CreateBundle CreateBundle;


    @BeforeClass(alwaysRun = true)
    public void setup() throws MalformedURLException{
        DesiredCapabilities capabilities = DesiredCapabilities.firefox();
        capabilities.setBrowserName("firefox");
        this.driver = new RemoteWebDriver(new URL("http://192.168.1.237:5556/wd/hub"), capabilities);
        wait = new WebDriverWait(driver, 10);
        CreateBundle = PageFactory.initElements(driver, CreateBundle.class );
    }

    @AfterClass(alwaysRun = true)
    public void teardown(){
        this.driver.quit();
    }


    @Test(priority=1)
    public void testSignUpMainPage(){
        CreateBundle.loadPage();
        CreateBundle.login("super","5tg7uj6yh");

    }

    @Test(retryAnalyzer=Retry.class)
    public void addBundle(){
        CreateBundle.openBundle();
        CreateBundle.createBundles("Accum 4Mins 4MB", "1","SMS","1");

    }

如何在一個瀏覽器中運行測試?

我知道一種方法,但是如果您決定並行運行相同的測試,那可能意味着某些問題。 我建議您對靜態參數進行一些研究,看看它是否適合您。

當您開始第一個測試時,請執行以下操作:

public class Driver()
{
    DesiredCapabilities capabilities = DesiredCapabilities.firefox();
    capabilities.setBrowserName("firefox");
    public static driver = new Webdriver(new URL("192.168.1.237:5556/wd/hub"), capabilities);
}
public class Tests()
{
    public void Test1(Webdriver driver)
    {
        driver.Navigate(pageurl);
        driver.Findelement();
        //etc
     }
}
//Implementation like
Test1(Driver.driver);

這樣,您調用driver.someFunction();的任何測試; 只要您在最后一次測試之前不要求close()或quit(),它將起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM