我正在使用Selenium Webdriver进行测试,并希望有机会选择运行每个测试集的浏览器。我使用了工厂来实现此目的,但是由于某种原因,我似乎无法使其正常运行。这是我所拥有的

class WebDriverFactory {

private WebDriver driver;
private String baseUrl;
private StringBuffer verificationErrors = new StringBuffer();

private WebDriverFactory() {
}

public static void setChromePath() {
// Set file path here
}

public static void setIEPath() {
// Set file path here
}

public static WebDriver getWebDriver(String type) {

System.out.println("choose a browser:");
Scanner scan = new Scanner(System.in);
scan.next();

if (type.equalsIgnoreCase("chrome")) {
  return createChrome();
} else if (type.equalsIgnoreCase("firefox")) {
  return createFirefox();
} else if (type.equalsIgnoreCase("IE")) {
  return createInternetExplorer();
} else {
  return null;
}


}

private static WebDriver createChrome() {

System.setProperty("webdriver.chrome.driver", "C:/Program Files

(x86)/Google/Chrome/Application/chromedriver_win32_2.1/chromedriver.exe");
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
ChromeOptions chromeOptions = new ChromeOptions();
capabilities.setCapability("chrome.binary",

"C:/AppData/Local/Google/Chrome/Application/chrome.exe");
 WebDriver driver = new ChromeDriver(capabilities);
 return driver;
}

private static WebDriver createFirefox() {

WebDriver driver = new FirefoxDriver();
return driver;
}

private static WebDriver createInternetExplorer() {

File file = new File("C:/Utils/IEDriverServer_Win32_2.33.0/IEDriverServer.exe");
System.setProperty("webdriver.ie.driver", file.getAbsolutePath());
WebDriver driver = new InternetExplorerDriver();
return driver;
}
}


在测试课程中,我有:

String type = null;
WebDriverFactory.getWebDriver(type);


当我输入字符串时,扫描仪似乎什么也不做,浏览器也无法打开?有人可以帮我吗?

我现在在测试班上有这个:

System.out.println("choose a browser:");
Scanner scan = new Scanner(System.in);
String type = scan.next();
WebDriverFactory.getWebDriver(type);

最佳答案

如Jayan所述,您应该有一个NPE,因为您要将null传递给getWebDriver方法。但是,除此之外,在代码中,您正在使用scan.next()语句读取字符串,但尚未将读取值分配给变量type

这样说,您的声明应如下所示:

Scanner scan = new Scanner(System.in);
type = scan.next();


除此之外,我看不到将type变量传递给getWebDriver方法的任何用法,无论如何,在type方法中将用户的输入输入为getWebDriver

10-04 19:09