Чтение непрочитанных писем с помощью селена

#selenium #selenium-webdriver

Вопрос:

у меня есть приведенный ниже код для чтения электронных писем и проверки соответствия темы ожидаемому сообщению

 Message[] messages = folder.getMessages();  String message="Thanks for contacting";   if(folder.getUnreadMessageCount()!=0)  {  for (Message mail : messages)   {  if(!mail.isSet(Flags.Flag.SEEN) amp;amp; mail.getSubject().contains("Thanks"))//if mail is unread and the message matches  {  mail.setFlag(Flags.Flag.SEEN, true);  softAssert.assertTrue(true,"Email received -gt;");  Reporter.log("Email received -gt;"   mail.getSubject(), true);  break;    }  if(!mail.isSet(Flags.Flag.SEEN) amp;amp; !mail.getSubject().contains("Thanks"))//if mail is unread and the message does not match  {  System.out.println(mail.getSubject()   "-gt; is not the email we are looking for");     }   }     }  else  {  softAssert.assertTrue(false,"Email not received");  Reporter.log("Email not received -gt;"   message, true);  }   

Проблема в том, что я хочу провалить этот тест, если оба условия внутри цикла for не будут выполнены. если я помещу элемент else в цикл for, он напечатает элемент «не получено для достижения» в цикле. как мне это сделать?

Ответ №1:

Вы можете использовать boolean выражение. Смотрите приведенный ниже простой пример,

 boolean test = true;  boolean test2 = true;   for (int i = 0; i lt; 3; i  ) {  if (!test) {  System.out.println("Test value is false.");  } else {  test = false;  }  if (!test2) {  System.out.println("Test2 value is false.");  } else {  test2 = false;  }  if(!test amp;amp; !test2) {  System.out.println("Breaking loop.");  break;  }  }  

Создайте две boolean переменные и установите их значения как true в случае, если ваше if условие не выполняется внутри цикла, затем с помощью else блока измените boolean значение на false и сделайте то же самое для вашего второго if условия. В последнем if условии, если оба оператора завершаются неудачно, break цикл завершается.

Комментарии:

1. Он выходит из цикла при первом же запуске, потому что этот цикл считывает даже прочитанные сообщения.

2. Цель решения состоит в том, чтобы дать представление о том, как действовать The problem is I want to fail this test if both the conditions inside the for loop fail.