我前幾天就一個類似的問題做了一個主題,我想我已經解決了它,但是當我試圖接受用戶建議並將我的代碼拆分爲更符合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