使用Common Selenium WebDriver实例

时间:2013-12-22 14:54:45

标签: java selenium selenium-webdriver testng instance

我希望在我的所有TestNG测试中使用一个通用的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());
   }
}

2 个答案:

答案 0 :(得分:4)

问题是您的getDriver方法静态

解决方案#1:使方法非静态(这也需要使driver变量非静态,或者使用return Browser.getDriver();

public WebDriver getDriver() {
    return driver;
}

使用getDriver

调用Browser.getDriver方法
WebElement query = Browser.getDriver().findElement(By.name("q"));

答案 1 :(得分:1)

你需要启动你的驱动程序,许多解决方案之一是尝试@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();
        }
  }