Selenium WebDriver,如何运行/连接下一个类

时间:2014-04-24 07:47:34

标签: selenium selenium-webdriver webdriver

我是Selenium Webdriver的新手,我有几个问题:

首先,我有2个班级,' Login.java'和' SelectCity.java

第1课:Login.java

  • invalidLogin

  • validLogin

第2课:SelectCity.java

目前,我在Login.java中写过

@After

public void tearDown() throws Exception {
    driver.close();
}

这意味着浏览器在完成运行后会关闭吗?

这是我的问题:

  1. 运行validLogin后如何制作,它会继续运行下一个类(SelectCity.java)? 是否可以这样做?

  2. 如何使最后一个浏览器(测试有效登录)没有关闭?

  3. 我当前的Login.java类:

          public class Login  extends SelectCityAfterLogin{
    
      private WebDriver driver;
      private String baseUrl;
      private StringBuffer verificationErrors = new StringBuffer();
    
      @Before
      public void setUp() throws Exception {
        driver = new FirefoxDriver();
        baseUrl = "http://mysite/";
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
      }
    
    
      @Test 
      public void testLoginInvalidPass() throws Exception {
        driver.get(baseUrl + "/mysite/login.aspx");
        driver.findElement(By.id("txtUsername")).sendKeys("user1");
        driver.findElement(By.id("txtPassword")).sendKeys("somePassword");
        driver.findElement(By.id("lbLogin")).click();
    
        try {
          assertEquals("Invalid User or Password", driver.findElement(By.id("lblError")).getText());
        } catch (Error e) {
          verificationErrors.append(e.toString());
        }
      }
    
      @Test 
      public void testLoginInvalidUsername() throws Exception {
        driver.get(baseUrl + "/mysite/login.aspx");
        driver.findElement(By.id("txtUsername")).sendKeys("username");
        driver.findElement(By.id("txtPassword")).sendKeys("somepassword");
        driver.findElement(By.id("lbLogin")).click();
    
        try {
          assertEquals("Invalid User or Password", driver.findElement(By.id("lblError")).getText());
        } catch (Error e) {
          verificationErrors.append(e.toString());
        }
      }
    
      @Test 
      public void testLoginNoUsername() throws Exception {
        driver.get(baseUrl + "/mysite/login.aspx");
        driver.findElement(By.id("txtUsername")).sendKeys("");
        driver.findElement(By.id("txtPassword")).sendKeys("somePassword");
        driver.findElement(By.id("lbLogin")).click();
    
        try {
          assertEquals("Please fill username and password.", driver.findElement(By.id("lblError")).getText());
        } catch (Error e) {
          verificationErrors.append(e.toString());
        }
      }
    
      @Test 
      public void testLoginNoPassword() throws Exception {
        driver.get(baseUrl + "/mysite/login.aspx");
        driver.findElement(By.id("txtUsername")).sendKeys("username");
        driver.findElement(By.id("txtPassword")).sendKeys("");
        driver.findElement(By.id("lbLogin")).click();
    
        try {
          assertEquals("Please fill username and password.", driver.findElement(By.id("lblError")).getText());
        } catch (Error e) {
          verificationErrors.append(e.toString());
        }
      }
    
      @Test 
        public void testLoginValid() throws Exception{
        //SelectRoleAfterLogin selectRole = SelectRoleAfterLogin();  
    
        driver.get(baseUrl + "/mysite/login.aspx");
        driver.findElement(By.id("txtUsername")).sendKeys("myUsername");
        driver.findElement(By.id("txtPassword")).sendKeys("password");
        driver.findElement(By.id("lbLogin")).click();
        Thread.sleep(3000);     
      }  
    

    }

    THX

2 个答案:

答案 0 :(得分:0)

是的,您可以在登录后运行selectcity

您应该将您的第一堂课扩展到第二堂课

在你的Login.java中将它扩展为selectcity java,如下所示

Public class login extends Selectcity {

在您的有效登录后

为selectcity创建一个新实例(如果您正在使用@test,请在其中创建以下内容)

selectcity test = new selectcity()
Once after your valid login do the following
test.(will fetch you the methods available in selectcity.java)

通过这种方式,您可以将一次课程调用到另一个课程。

如果有帮助,请告诉我

更新:

如果public class Login extends **SelectCityAfterLogin**中的selectcityAfterlogin是你的第二个类名,那么你想创建一个不正确的对象

在您的公共登录类中,请检查您是否正在扩展正确的第二类名称

在@test方法

@Test 
    public void testLoginValid() throws Exception{
    //SelectRoleAfterLogin selectRole = SelectRoleAfterLogin(); 

应该是

SelectCityAfterLogin selectrole = new SelectCityAfterLogin()
selectrole.(will fetch you the methods of second city)

如果有帮助,请告诉我。

一个更好的解决方案是创建多个方法而不是多个@test。您可以将这些称为单个@test套件。

答案 1 :(得分:0)

  

我假设你有2个班级' Login.java'和' SelectCity.java'   如下:

第1课:Login.java

public void invalidLogin (WebDriver driver){

//some operations

}

public void validLogin (WebDriver driver){

//some operations

}

第2课:SelectCity.java

public void selectCity (Webdriver Driver){

//some operations

}

第3课:LoginAndSelectCity.java

public static void main(String args []){

WebDriver driver = new FirefoxDriver();

Login.validLogin(driver);
SelectCity.selectCity(driver);

}

如果所有类都在同一个包中,那么只有它才有效,否则你需要导入包或创建新的子进行类的继承。