我目前正在设置我的测试,每个类都实例化自己的浏览器。每个类都基于我想要测试的页面。我现在希望我的测试能够在一个浏览器中运行。 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");
}
如何在一个浏览器中运行我的测试?
答案 0 :(得分: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()的任何测试;只要你在最后一次测试之前没有调用close()或quit(),就会有效。