Selenium выполняется только если часть цикла! = Null и не запускает часть цикла else if null - PullRequest
1 голос
/ 21 сентября 2019

У меня есть оператор if-else, где:

условие 1: совпадения идентификатора и некоторые поля заполняются автоматически.Тогда оператор if заполняет только оставшиеся поля

условие 2: идентификатор не совпадает, все поля пусты.Инструкции ELSE заполняют их все

Когда я выполняю условие 1, код выполняется, если оператор If работает правильно.Когда я выполняю условие 2, код снова запускает то, что должен делать оператор If, а не оператор else

. Я использую Selenium Java для автоматизации.

Я попытался поместить отдельный if-elseоператоры для каждого объекта поля, я попытался чередовать между if! = null, если! field.equals (null).Я также попытался сделать field.gettext (), присвоить его переменной и проверить переменную.length! = 0.

if (driver.findElement(By.name("city")) != null) {

    object.setField6;
    object.setField7;
    object.setField8;
    object.setField9;

} else {

    object.setField2;
    object.setField3;
    object.setField4;
    object.setField5;
    object.setField6;
    object.setField7;
    object.setField8;
    object.setField9;
}

Я выбрал поле случайного адреса для своего оператора if.

if (cityField != null) {

     Only fill the three remaining fields

} else {

     Fill all 8 fields (i.e. including address fields)

}

Когда я запускаю это и устанавливаю правильный идентификатор, оператор if работает правильно.Но когда я помещаю недопустимый идентификатор, который оставляет значение «cityField» пустым, оператор if выполняется вместо оператора «else» и заполняет только 3 поля вместо всех 8.

Это все, что я делаю внутриметоды объекта для каждого поля:

method() {
  city.click();
  city.sendKeys(cityName); 
}

1 Ответ

0 голосов
/ 22 сентября 2019
 if (driver.findElements(By.name("city")).size() > 0) {

                object.setField6;
                object.setField7;
                object.setField8;
                object.setField9;

            } else {

                object.setField2;
                object.setField3;
                object.setField4;
                object.setField5;
                object.setField6;
                object.setField7;
                object.setField8;
                object.setField9;
            }

В качестве альтернативы вы можете сделать

         try   {
                driver.findElement(By.name("city"));
                object.setField6;
                object.setField7;
                object.setField8;
                object.setField9;

               } catch(WebDriverException wde)
            {
                object.setField2;
                object.setField3;
                object.setField4;
                object.setField5;
                object.setField6;
                object.setField7;
                object.setField8;
                object.setField9;
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...