我想通过扩展我的测试类以使用如下所示的基类,在我所有的 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());
}
}
最佳答案
问题是您的 getDriver
方法是static。
解决方案 #1:使方法成为非静态的(这需要使 driver
变量也成为非静态的,或者使用 return Browser.getDriver();
)
public WebDriver getDriver() {
return driver;
}
或者,使用Browser.getDriver
调用getDriver
方法
WebElement query = Browser.getDriver().findElement(By.name("q"));
关于java - 使用普通的 Selenium WebDriver 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20730665/