2013-12-06 8 views
0

Я хочу, чтобы иметь возможность объявлять драйвер селена в цикле в зависимости от выбора пользователя. Я хочу, чтобы драйвер вызывался драйвером, независимо от того, какой он есть, поэтому я могу использовать его для всего, вместо того, чтобы иметь один отдельный набор кода для IE и для Firefox. Надеюсь, что это имело смысл, я очень новичок в Java.Объявление повторяющейся переменной в цикле в Java

switch (browserId){ 
    case 1: 
      FirefoxDriver driver = new FirefoxDriver(); 

    case 2: 

     InternetExplorerDriver driver = new InternetExplorerDriver(); 

    default: 
      System.out.println("An error has occurred, the program will now close."); 
     System.exit(0); 
    } 

Это создает ошибку компиляции, как у меня есть две переменных с именем драйвера, однако я никогда не должен иметь их как существующие одновременно. Есть ли способ обойти это?

+1

'switch' объявляет сферу, а не' case' .. Ваши переменные не очень полезны в этот момент. –

+1

НУЖНО перерыв; в каждом случае. default case don; t нужен разрыв; – Loc

+0

вы можете добавить область для каждого случая 'case 1: {/ * code */break; } ', но это, вероятно, не то, что вы хотите, потому что' driver' выйдет за рамки. Последнему случаю не потребуется перерыв - это не обязательно будет случай по умолчанию. – zapl

ответ

2

Я хочу, чтобы водитель, чтобы назвать водитель независимо от того, какого рода это, , так что я могу затем использовать его для всего вместо одного отдельного набора коды для IE и Firefox.

Если оба этих классов реализовать интерфейс Driver (или это WebDriver?), То вы можете просто сделать

Driver driver = null; 
switch (browserId){ 
case 1: 
    driver = new FirefoxDriver(); 
    break; 
case 2: 
    driver = new InternetExplorerDriver(); 
    break; 
default: 
    System.out.println("An error has occurred, the program will now close."); 
    System.exit(0); 
} 

Теперь вы можете использовать driver, но проверить null.

Причина, по которой вы не можете сделать это, заключается в том, что блок switch начинает область. Если вы объявите переменную с именем driver, вы не можете переопределить другую переменную с тем же именем в той же области.

+0

Слишком быстро. Ты подтолкнул меня на это. – MadConan

0

Если все они получены из общего типа, объявите переменную вне коммутатора.

Driver d = null; 

switch(browserId){ 
    case 1: 
     d = new FireFoxDriver(); 
     break; // don't forget!! 
    case 2: 
     d = new InternetExplorerDriver(); 
     break; 
    ... // omitting other cases and default 

} 

Если нет, тогда вам нужно использовать разные имена в каждом случае.

+0

@SotiriosDelimanolis исправлено, спасибо! – MadConan

1

Вы можете сделать это следующим образом:

WebDriver driver;      // <-- move outside the switch 
switch (browserId){ 
    case 1: 
     driver = new FirefoxDriver(); 
     break;      // <-- add breaks 
    case 2: 
     driver = new InternetExplorerDriver(); 
     break; 
    default: 
     // exceptions are more welcome than System.exit(); 
     throw new IllegalArgumentException("wrong browserId: " + browserId); 
} 
Смежные вопросы