2016-02-02 165 views
0

我目前有我的測試設置,每個類實例化自己的瀏覽器。每個課程都基於我想測試的頁面。我現在想讓我的測試全部在一個瀏覽器中運行。目前已經建立了Mu代碼。我有一個通用方法被繼承的基本頁面,然後我有一個java.class用於特定頁面的方法,後面跟着一個test.class來運行我的測試。在同一個瀏覽器中運行所有測試webdriver testng

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"); 

    } 

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

回答

0

有一種方法我知道,但如果您決定並行運行相同的測試,那麼這可能會導致一些問題。我建議你研究一下靜態參數,看看它是否適合你。

當你開始你的第一個測試做如下:

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()任何測試;將工作,只要你沒有要求關閉()或退出(),直到你達到最後的測試。

+0

我應該在哪裏設置我的靜態Webdriver爲靜態?我有點困惑如何在哪裏使用它? – trevdro

+0

只需實現一個webdriver的靜態實例並在所有測試中實現同一個實例。 – AlexCharizamhard

+0

我是否在基本頁面中實現它? – trevdro

相關問題