Используйте строку вне оператора if и else для установки значения строки - PullRequest
0 голосов
/ 11 сентября 2018

У меня просто достаточно простой вопрос по моей проблеме. Я пытаюсь установить строковое значение на "0", если веб-элемент отсутствует, иначе строка является значением веб-элемента (используется getText). Однако я не могу использовать эти значения за пределами оператора if и else . Как мне это сделать?

Вот мой код

String players_in_game = null;

public void join_game_user_increases_register() throws Exception {

    WebDriverWait wait = new WebDriverWait(Drivers.getDriver(), 10);
    wait.until(ExpectedConditions.visibilityOf(countdownLabel));

    if (!num_of_players_in_game.isDisplayed()) {
        String players_in_game = "0";
    } else {
        String players_in_game = num_of_players_in_game.getText();
    }

    System.out.println(players_in_game);
    int first_num = Integer.parseInt(players_in_game);

Ответы [ 4 ]

0 голосов
/ 13 сентября 2018

Вы можете попробовать это:

String players_in_game = null;

public void join_game_user_increases_register() throws Exception {

WebDriverWait wait = new WebDriverWait(Drivers.getDriver(), 10);
wait.until(ExpectedConditions.visibilityOf(countdownLabel));

try {
    if (num_of_players_in_game.isDisplayed()) {
        String players_in_game = num_of_players_in_game.getText();
    }
} catch (Exception e) {
    String players_in_game = "0";
}

System.out.println(players_in_game);
int first_num = Integer.parseInt(players_in_game);
0 голосов
/ 11 сентября 2018

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

if(!num_of_players_in_game.isDisplayed()){
    players_in_game = "0";
} else {
    players_in_game = num_of_players_in_game.getText();
}
0 голосов
/ 11 сентября 2018

Java позволяет скрывать переменные на уровне класса.Таким образом, вы можете объявить переменную, имя которой совпадает с именем переменной класса внутри любого метода.В вашем случае имя переменной - players_in_game.

. Вы можете еще раз определить эту переменную в методе, но область действия этой новой переменной будет другой.Поэтому, если вы хотите установить String уровня класса внутри метода, не определяйте новую переменную и используйте переменную уровня класса.

Так что просто используйте следующий код:

if (!num_of_players_in_game.isDisplayed()) {
    players_in_game = "0";
} else {
    players_in_game = num_of_players_in_game.getText();
}

Уже другие ответили с кодом.Я просто хотел объяснить причину.

0 голосов
/ 11 сентября 2018

Используйте код ниже:

WebDriverWait wait = new WebDriverWait(Drivers.getDriver(), 10);
wait.until(ExpectedConditions.visibilityOf(countdownLabel));

String players_in_game = "0";
if(num_of_players_in_game.isDisplayed()){
   players_in_game = num_of_players_in_game.getText();   
}

System.out.println(players_in_game);
int first_num = Integer.parseInt(players_in_game);

Или:

String players_in_game = num_of_players_in_game.isDisplayed() ? num_of_players_in_game.getText() : "0";

Или:

List<WebElements> num_of_players_in_game = driver.findElements(By....);
String players_in_game = num_of_players_in_game.size()==0 ? "0": num_of_players_in_game.get(0).getText();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...