Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java类变量去极化_Java_Selenium_Scope - Fatal编程技术网

Java类变量去极化

Java类变量去极化,java,selenium,scope,Java,Selenium,Scope,我正在尝试编写一个Selenium Java.class文件,以便在多个web浏览器之间循环。然而,我被一个JavaOOP范围问题挂断了电话。下面的“driver”变量只允许声明一次。在第一个Firefox声明中。其他switch语句块不喜欢重新声明“driver” 我想我可以在switch语句上面声明'driver',但是,我不知道声明它为哪个类,因为它需要是一个不同的类,这取决于所使用的浏览器 这类问题通常是如何处理的 谢谢 switch (BrowserName){ cas

我正在尝试编写一个Selenium Java.class文件,以便在多个web浏览器之间循环。然而,我被一个JavaOOP范围问题挂断了电话。下面的“driver”变量只允许声明一次。在第一个Firefox声明中。其他switch语句块不喜欢重新声明“driver”

我想我可以在switch语句上面声明'driver',但是,我不知道声明它为哪个类,因为它需要是一个不同的类,这取决于所使用的浏览器

这类问题通常是如何处理的

谢谢

    switch (BrowserName){
    case "Firefox":
        FirefoxDriver driver = new FirefoxDriver();
        break;
    case "Chrome":
        System.setProperty("webdriver.chrome.driver", "C:\\chromedriver_win32\\chromedriver.exe");
        ChromeDriver driver = new ChromeDriver();
        break;
    case "IE":
        System.setProperty("webdriver.ie.driver", "C:\\InternetExplorerDriver32\\IEDriverServer.exe");
        InternetExplorerDriver driver = new InternetExplorerDriver();
        break;
    case "Safari":
        SafariDriver driver = new SafariDriver();
        break;
    default:
        System.out.println("Browser not recognized.  Spawning default Firefox browser.");
        FirefoxDriver driver = new FirefoxDriver();
        break;
    }

您缺少一个非常基本的选项,即使用所有驱动程序实现的底层接口。也就是说,你可以用这样的东西=

org.openqa.selenium.WebDriver driver = null;
switch (BrowserName){
// As before, but don't redefine driver, just assign it
 case "Firefox":
    driver = new FirefoxDriver(); // for example.
    break;
// ....
}

然后您应该能够正常使用
驱动程序。

您缺少一个非常基本的选项,即使用所有驱动程序实现的底层接口。也就是说,你可以用这样的东西=

org.openqa.selenium.WebDriver driver = null;
switch (BrowserName){
// As before, but don't redefine driver, just assign it
 case "Firefox":
    driver = new FirefoxDriver(); // for example.
    break;
// ....
}

然后您应该能够正常使用
驱动程序

这些驱动程序类共享相同的超级类或公共接口吗?如果是这样,你可以这样做

BaseDriver driver = null; //before switch

这些驱动程序类共享同一个超级类还是公共接口?如果是这样,你可以这样做

BaseDriver driver = null; //before switch