使用常规的Selenium WebDriver实例

3
我希望能够通过扩展测试类来使用基础类,并在所有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,如下所示,但是我收到错误信息: 类型GoogleTest未定义方法getDriver():
   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());
   }
}

这应该可以工作。你使用的是哪个IDE或编译器?你确定你正在引用正确的“Browser”类吗? - Robin Green
2个回答

4
问题在于你的getDriver方法是静态的
解决方案 #1:将该方法改为非静态的(这还需要将driver变量改为非静态的,或者使用return Browser.getDriver();
public WebDriver getDriver() {
    return driver;
}

或者,可以通过使用Browser.getDriver调用getDriver方法。

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

谢谢你们的回复,它们都有效,但我想知道是否可以直接使用driver变量,即:WebElement query = driver.findElement(By.name("q")); - user2850361
忽略我的上一条评论,我已经使用了Simon的解决方案。 - user2850361

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();
        }
  }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接