java工厂模式问题

标签 java selenium-webdriver factory-pattern

我正在使用 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 提到的,由于您将 null 传递给 getWebDriver 方法,因此您应该得到一个 NPE。但是,抛开这一点,在您的代码中,您正在使用 scan.next() 语句读取字符串,但尚未将读取的值分配给变量 type

话虽如此,你的陈述应该如下:

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

除此之外,我没有看到将 type 变量传递给 getWebDriver 方法的任何用途,无论如何,从用户处获取 的输入>在 getWebDriver 方法中输入

关于java工厂模式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17670955/

相关文章:

python-2.7 - Python 中的 Webdriver 如何等待 HTML 表格加载

c# - 基于字符串实例化对象的最佳方法

C# - Ninject、IoC 和工厂模式

java - hadoop 中用于映射器和组合器的不同上下文类型

java - BigDecimal 的科学计数法舍入

java - 8x8 骑士之旅 Java 内存不足

node.js - Protractor - 如果元素可见,如何添加 if 条件,因此跳过此测试用例,否则执行以下操作

javascript - 在 selenium/appium 中,有一种方法可以在单击按钮等后检查/验证单击操作是否成功或不成功

c++ - C++ 中具有可变参数签名的函数映射

java - 如何在 Linux 中打开命令终端?