令牌上的语法错误"否则",删除此令牌

时间:2014-10-08 11:07:50

标签: java google-chrome selenium

我得到语法错误有人可以告诉我什么是错的。

控制台文字:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    Syntax error on token "else", delete this token
    at gg.main(gg.java:23)

代码:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;


public class gg {

    public static void main(String[] args) {


String browser = "Chrome";

WebDriver driver = null;

if(browser.equals("Mozilla"))
    driver = new FirefoxDriver();

else if(browser.equals("Chrome"))
    System.setProperty("webdriver.chrome.driver", "F:\\chromedriver_win32\\chromedriver.exe");
    driver = new ChromeDriver();

    else if(browser.equals("IE"))
        System.setProperty("webdriver.IE.driver", "C:\\Users\\Ryuk~\\Downloads\\IEDriverServer_x64_2.43.0\\IEDriverServer.exe");
        driver = new InternetExplorerDriver();


    driver.get("https://gmail.com");
    System.out.println(driver.getTitle());





    }

}

4 个答案:

答案 0 :(得分:3)

你忘记了{} 这样做是这样的:

if(browser.equals("Mozilla"))
    driver = new FirefoxDriver();

else if(browser.equals("Chrome")){
    System.setProperty("webdriver.chrome.driver", "F:\\chromedriver_win32\\chromedriver.exe");
    driver = new ChromeDriver();
}else if(browser.equals("IE")){
    System.setProperty("webdriver.IE.driver", "C:\\Users\\Ryuk~\\Downloads\\IEDriverServer_x64_2.43.0\\IEDriverServer.exe");
    driver = new InternetExplorerDriver();
}
driver.get("https://gmail.com");
System.out.println(driver.getTitle());

如果没有{},只有只有一行(如第一部分

)才能使用

答案 1 :(得分:2)

你的代码缺少大括号(就是这些:{} BTW)。如果你的if语句只涉及一行,那就没关系,不过我建议你使用它们来保证可读性。

总的来说,您的代码应该类似于:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;


public class gg {

  public static void main(String[] args)
  {


     String browser = "Chrome";

     WebDriver driver = null;

     if(browser.equals("Mozilla"))
     {
      driver = new FirefoxDriver();
     }
     else 
     {
         if(browser.equals("Chrome"))
         {
            System.setProperty("webdriver.chrome.driver", "F:\\chromedriver_win32\\chromedriver.exe");
            driver = new ChromeDriver();
         }
         else
         {
            if(browser.equals("IE"))
            {
               System.setProperty("webdriver.IE.driver", "C:\\Users\\Ryuk~\\Downloads\\IEDriverServer_x64_2.43.0\\IEDriverServer.exe");
               driver = new InternetExplorerDriver();
            }
         }
      }
      if(driver !null)
      {
         driver.get("https://gmail.com");
         System.out.println(driver.getTitle());
      }
   }
}

我还添加了一小段验证,以便在打印之前检查驱动程序是否为空(即先分配)。

我也希望你有getTitle()的方法,否则也会有问题。


现在,


1)*应解决您的问题。

2)我(个人)认为阅读更容易。

3)我希望您已经了解了{}在您的代码中的重要性。

答案 2 :(得分:0)

是的,您忘了将if,elseif和else语句括在括号{}中。 我个人更喜欢为每个使用大括号,即使它只有一个陈述。顺便说一句。它使代码更具可读性;)

这应该有效:

if(browser.equals("Mozilla")) {
  driver = new FirefoxDriver();
} else if(browser.equals("Chrome")) {
  System.setProperty("webdriver.chrome.driver", "F:\\chromedriver_win32\\chromedriver.exe");
  driver = new ChromeDriver();
} else if(browser.equals("IE")) {
  System.setProperty("webdriver.IE.driver", "C:\\Users\\Ryuk~\\Downloads\\IEDriverServer_x64_2.43.0\\IEDriverServer.exe");
  driver = new InternetExplorerDriver();
}

driver.get("https://gmail.com");
System.out.println(driver.getTitle());

答案 3 :(得分:0)

如果没有花括号的else块只接受每个块中的一条指令。此外,一个好的缩进是可读代码的基础,它会避免你这样的麻烦。