2013-12-22 77 views
3

我想延長我的測試類使用的基類,如下圖所示用在我所有的TestNG進行共同webdriver的實例,但它似乎不工作:使用公用硒webdriver的情況下

public class Browser { 

private static WebDriver driver = new FirefoxDriver(); 

public static WebDriver getDriver() 
{ 
    return driver; 
} 
public static void open(String url) 
{ 
    driver.get(url); 
} 
public static void close() 
{ 
    driver.close(); 
} 
} 

我要使用webdriver的在我的測試類,如下圖所示,但我得到的錯誤信息: 方法getDriver()是未定義的類型GoogleTest

public class GoogleTest extends Browser 
    { 

     @Test 
     public void GoogleSearch() { 
    WebElement query = getDriver().findElement(By.name("q")); 
    // Enter something to search for 
    query.sendKeys("Selenium"); 
    // Now submit the form 
    query.submit(); 
    // Google's search is rendered dynamically with JavaScript. 
    // Wait for the page to load, timeout after 5 seconds 
     WebDriverWait wait = new WebDriverWait(getDriver(), 30); 
    // wait.Until((d) => { return d.Title.StartsWith("selenium"); }); 
    //Check that the Title is what we are expecting 
    assertEquals("selenium - Google Search", getDriver().getTitle().toString()); 
    } 
} 
+0

這應該有效。你使用的是什麼IDE或編譯器?你確定你指的是正確的'Browser'類嗎? –

回答

3

的問題是,你的getDriver方法是靜態

解決方案#1:製作方法非靜態(這要麼需要使driver變量非靜態爲好,或使用return Browser.getDriver();

public WebDriver getDriver() { 
    return driver; 
} 

或者調用getDriver方法通過使用Browser.getDriver

WebElement query = Browser.getDriver().findElement(By.name("q")); 
+0

感謝您的答覆,他們都工作,但我想知道我是否可以直接使用驅動程序變量,即WebElement query = driver.findElement(By.name(「q」)); – user2850361

+0

忽略我最近的評論我已經使用simons解決方案 – user2850361

1

你需要啓動你的驅動器,一個的人y解決方案是嘗試@Before添加,Junit將自動爲您運行。

public class Browser { 

     private WebDriver driver; 

     @Before 
     public void runDriver() 
     { 
      driver = new FirefoxDriver(); 
     } 

     public WebDriver getDriver() 
     { 
      return driver; 
     } 

     public void open(String url) 
     { 
      driver.get(url); 
     } 

     public void close()   
     { 
      driver.close(); 
     } 
    } 
+0

感謝您的幫助! – user2850361