2012-10-04 56 views
1

我必须创建一个通用类,它设置硒webdriver。我设置的基类:Setupbase.javaselenium网络驱动程序:如何从硒调用一个类Junit程序

public void setUp() throws Exception { 
driver = new FirefoxDriver(); 
baseUrl = "http://example.com/"; 
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);} 

此设置类是常见的。每当我写一个新程序时,我都需要调用这个类。 这是我的登录程序:Login.java

public class Login extends Setupbase{ 
super.setUp(); 
driver.get(baseUrl + "/"); 
driver.findElement(By.id("Email")).clear(); 
driver.findElement(By.id("Email")).sendKeys("username"); 
driver.findElement(By.id("Passwd")).clear(); 
driver.findElement(By.id("Passwd")).sendKeys("password"); 
driver.findElement(By.id("signIn")).click();} 

但同时执行此代码我收到提示。谁能帮我解决这个问题。

回答

1

这将是你设置类:

public class Setupbase { 

WebDriver driver; 
String baseUrl; 
public void setUp() throws Exception { 
    driver = new FirefoxDriver(); 
    baseUrl = "http://example.com"; 
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);} 

} 

使用该设置类的类:

public class Login extends Setupbase 
{ 
@Test 

public void LoginTest() throws Exception{ 

    super.setUp(); 
    driver.get(baseUrl + "/"); 
    driver.findElement(By.id("Email")).clear(); 
    driver.findElement(By.id("Email")).sendKeys("username"); 
    driver.findElement(By.id("Passwd")).clear(); 
    driver.findElement(By.id("Passwd")).sendKeys("password"); 
    driver.findElement(By.id("signIn")).click();} 

} 
+0

driver.get(baseUrl +“/”);从这行不工作..空webdriver窗口已打开..但baseurl没有加载.. – bumblebee87

+0

要么不添加'/'在您的基地网址字符串或删除'/'你的baseurl字符串在setupbase class.See编辑的答案。 –

1

我谨代表我的结构我在项目中使用。 看来你忘了@Before,@After@Test表示法。

public class BaseSeleniumTest extends SeleneseTestBase { 
    static WebDriver driver; 

    @Before 
    public void openFirefox() throws IOException { 


     driver = new FirefoxDriver(); 
     driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); 

     driver.get(propertyKeysLoader("login.base.url")); 
     doAdminLogin(); 
    } 


    @After 
    public void closeFirefox(){ 
     driver.quit(); 
    } 

    public void doAdminLogin() throws IOException { 
     String curTitle=driver.getTitle(); 
     locatorFindingHandling("login.logininput", "login.admin.login"); 
     locatorFindingHandling("login.passinput", "login.admin.pass"); 
     locatorFindingHandling("login.loginbutton"); 

     String newTitle=driver.getTitle(); 
     Assert.assertFalse(curTitle.equals(newTitle)); 

    } 


    public void locatorFindingHandling(String key) throws IOException /*throws IOException*/ { 

     fluentWait(By.cssSelector(propertyKeysLoader(key))).click(); 

    } 
    public void locatorFindingHandling(String key, String key1) throws IOException { 

     driver.findElement(By.xpath(propertyKeysLoader(key))).sendKeys(propertyKeysLoader(key1)); 

    } 

    public void doLogout() throws InterruptedException, IOException { 
     String curTitle=driver.getTitle(); 
     jsClick("rms.home.logout"); 
     String newTitle=driver.getTitle(); 
     Assert.assertFalse(curTitle.equals(newTitle)); 

    } 
.... 
} 

然后我致以BaseSeleniumTest.java以下列方式:

public class LoginPageTestSuite extends BaseSeleniumTest { 


    @Test 
    public void loginWithEmptyCredentials() throws IOException, InterruptedException { 
     doLogout(); 
     fluentWait(By.cssSelector(propertyKeysLoader("login.loginbutton"))).click(); 

     Assert.assertTrue(fluentWait(By.cssSelector(propertyKeysLoader("login.validator.invalidautentication"))).getText().trim().equals("Invalid authentication")); 
    } 

    @Test 
    public void logoutAdminLogin() throws IOException, InterruptedException { 
     doLogout(); 
     doAdminLogin(); 

    } 

    @Test 
    public void loginWithWrongPass() throws IOException, InterruptedException { 
     doLogout(); 
     locatorFindingHandling("login.logininput", "login.admin.login"); 

     locatorFindingHandling("login.passinput", "login.invalidPass"); 

     locatorFindingHandling("login.loginbutton"); 
     Assert.assertTrue(fluentWait(By.cssSelector(propertyKeysLoader("login.validator.invalidautentication"))).getText().trim().equals("Invalid authentication")); 

    } 
..... 
} 

所以从你的代码点它是这样的:

public class Setupbase extends SeleneseTestBase { 
     static WebDriver driver; 

     @Before 
     public void openFirefox() throws IOException {   

      driver = new FirefoxDriver(); 
      driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); 
      String baseUrl = "http://example.com"; 
      driver.get(baseUrl);     
     }  

     @After 
     public void closeFirefox(){ 
      driver.quit(); 
     } 
} 

public class Login extends Setupbase{ 

@Test 
public void loginTest() { 
    driver.findElement(By.id("Email")).clear(); 
    driver.findElement(By.id("Email")).sendKeys("username"); 
    driver.findElement(By.id("Passwd")).clear(); 
    driver.findElement(By.id("Passwd")).sendKeys("password"); 
    driver.findElement(By.id("signIn")).click(); 
    } 
} 

希望这对你的作品。