我前几天就一个类似的问题做了一个主题,我想我已经解决了它,但是当我试图接受用户建议并将我的代码拆分为更符合OO的代码时,我只是继续运行同样的例外。传递三个类之间的信息,抛出异常。 (Java)
首先,我有我的'main'类,它加载一个JFrame,然后加载一个ComboBox类的实例和一个runButton类的实例。一旦它显示出来,它会运行一个while循环,等待来自运行按钮的特定响应,然后加载相应的Web驱动程序。
这是驱动程序类。
public class DynamicBrowsers {
public static void main(String[] args) {
BrowserBox b = new BrowserBox();
GoButton g = new GoButton();
JFrame IDE = new JFrame("IDE");
IDE.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
IDE.setContentPane(b);
IDE.add(g);
IDE.setPreferredSize(new Dimension(200, 100));
IDE.pack();
IDE.setVisible(true);
WebDriver driver = null;
while (g.browserValue == 0){
if(g.browserValue == 1){
driver = new FirefoxDriver();
System.out.println("FF!");
break;
}else if(g.browserValue == 2){
driver = new ChromeDriver();
System.out.println("Chrome!");
break;
}else if(g.browserValue == 3){
driver = new InternetExplorerDriver();
System.out.println("IE!");
break;
}
}
这个班有更多,但它是无关的,大多数只是我测试我可以在硒做什么。
它读取类是BrowserBox类,它实现了一个组合框,该代码是: -
public class BrowserBox extends JPanel {
public String browserPick;
String[] browsers = {"Please Select a Browser","Mozilla", "Chrome", "IE"};
public JComboBox browserPicker = new JComboBox(browsers);
public BrowserBox() {
add(browserPicker);
ActionListener cbActionListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent listChoice) {
String s = (String) browserPicker.getSelectedItem();//get the selected item
switch (s) {//check for a match
case "Please Select a Browser":
browserPick = "Please Select a Browser";
System.out.println(browserPick);
break;
case "Mozilla":
browserPick = "Mozilla";
System.out.println("Could have been a worse choice than " + browserPick);
break;
case "Chrome":
browserPick = "Chrome";
System.out.println("Good choice picking " + browserPick);
break;
case "IE":
browserPick = "IE";
System.out.println("For some reason you chose " + browserPick);
break;
default:
browserPick = "Please Select a Browser";
System.out.println("No match selected, defaulting too " + browserPick);
break;
}
}
};
browserPicker.addActionListener(cbActionListener);
}
}
最后按钮,GoButton类: -
public class GoButton extends JButton {
public int browserValue = 0;
JButton runButton = new JButton("Run Test");
BrowserBox cb = new BrowserBox();
public GoButton() {
add(runButton);
ActionListener bActionListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent runClicked) {
if (cb.browserPick.equals("Mozilla")){
browserValue = 1;
System.out.println("FF clicked " + browserValue);
}
else if (cb.browserPick.equals("Chrome")){
browserValue = 2;
System.out.println("Chrome clicked " + browserValue);
}
else if (cb.browserPick.equals("IE")){
browserValue = 3;
System.out.println("IE clicked " + browserValue);
}
}
};
runButton.addActionListener(bActionListener);
}
}
这是我得到异常的地方
异常在线程“AWT-EventQueue-0”java.lang.NullPointerException 在GoButton $ 1.actionPerformed(Go Button.java:21)
我认为问题是browserPick的值不会改变我期待它的方式,这意味着值为空,因此不是我正在寻找的东西,但我无法工作为什么。或者如何解决它。
对不起,如果我的问题很烦人,或者我正在做一些非常愚蠢的事情。试图在我深入研究更多硒之前,在周围的爪哇地区找到一片好地方。
谢谢 法雷尔
您是否听说过Safari?这是最好的。不是Chrome。 – tbodt