首先,我确信在这个网站上有一个潜伏的答案,我确实试过看,但我尝试的所有方法都连续失败了。我在Java编程方面还很陌生,所以对我很轻松,因为你要见证的是一些令人难以置信的代码!
我正在尝试学习Selenium,但在我编写测试之前,我想制作一个简单的IDE,询问您想要运行的浏览器以及您想要运行的测试。到目前为止,我在浏览器的弹出窗口中运行良好,但如果我想添加更多选项则没有用。所以我现在尝试在我的主类中创建一个Jframe,其中包含其他类,其中包含我想添加的任何按钮的内容。这是出问题的地方。
CLASS 1(MAIN)
public class DynamicBrowsers {
public static void main(String[] args) {
BrowserBox b = new BrowserBox();
JFrame IDE = new JFrame("IDE");
IDE.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
BrowserBox newContentPane = new BrowserBox();
IDE.setContentPane(newContentPane);
IDE.setPreferredSize(new Dimension(200, 100));
IDE.pack();
IDE.setVisible(true);
WebDriver driver = null;
if(b.browserValue == 0){
//driver=new FirefoxDriver();
System.out.println("No browser Selected");
}else if(b.browserValue == 1){
driver = new ChromeDriver();
System.out.println("FF!");
}else if(b.browserValue == 2){
driver = new ChromeDriver();
System.out.println("Chrome!");
}else if(b.browserValue == 3){
driver = new InternetExplorerDriver();
System.out.println("IE!");
}
}
}
CLASS 2(组合框和按钮)
public class BrowserBox extends JPanel {
public String browserPick;
String[] browsers = {"Please Select a Browser","Mozilla", "Chrome", "IE"};
public int browserValue = 0;
JButton runButton = new JButton("Run Test");
public JComboBox browserPicker = new JComboBox(browsers);
public BrowserBox() {
add(runButton);
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":
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;
}
}
};
ActionListener bActionListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent runClicked) {
if (browserPick == "Mozilla"){
browserValue = 1;
System.out.println("FF clicked " + browserValue);
}
else if (browserPick == "Chrome"){
browserValue = 2;
System.out.println("Chrome clicked " + browserValue);
}
else if (browserPick == "IE"){
browserValue = 3;
System.out.println("IE clicked " + browserValue);
}
}
};
browserPicker.addActionListener(cbActionListener);
runButton.addActionListener(bActionListener);
}
}
我想我实施的一切都错了。我觉得我应该把按钮分成一个单独的类或者在主类中,但我不确定。如果有人能指出我正确的方向,指出我做错了什么,如果可能的话,提供一个很好的简单修复。
谢谢你, 法雷尔
答案 0 :(得分:1)
这里有一些问题。
您声明两个类型为BrowserBox的变量 - 您使用一个并测试另一个变量(b和newContentPane)。
您还可以使用“==”来测试一个字符串是否与另一个字符串相等。这在一般情况下不起作用;您需要使用"String".equals(value)
或其他形式的equals()
方法。
答案 1 :(得分:0)
令人难以置信,似乎我忘记了在字符串比较中的某个点上将C中的C大写,这就是我花了2个小时的成本。
感谢所有人提供的输入,现在我已经找到了什么错误,我将回去尝试通过在主类中只有JFrame来使其更加面向对象。 Ty再次