#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.