2017-02-01 5 views
2

У меня возникает одна проблема в сценарии Selenium WebDriver, в моей логике я хочу проверить отправку формы с помощью нижеприведенных сценариев.Как обрабатывать динамический текст (текст успеха и неудачи) с использованием Selenium WebDriver

1.Submit form with already register details - Details already exists 
2.Submit Form with new details - Successfully added. 

Теперь моя проблема как текстовые сообщения, имеющие различные локаторы, как показано ниже

driver.findElement(By.xpath("//div[@class='alert alert-success']")).getText(); 
driver.findElement(By.xpath("//div[@class='alert alert-error']")).getText(); 

Теперь мне нужны коды селена в Java, как код автоматически обрабатывать текст на основе текста на экране, чтобы проверить, является ли моим тестовый случай - это пропуск/сбой. Пожалуйста, предоставьте, как написать этот тип ситуации на веб-странице.

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

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

+1

Может быть, вы должны использовать '' try'/catch'? – Andersson

ответ

1

Вы можете присвоить результат вашего поиска Xpath к строковой переменной, а затем регулировать поток оттуда. Я видел, один ответ уже дан для CSS, но до тех пор, пока ваш оригинальный пост относится к Xpath, это решение Xpath:

String isFormAlreadySubmitted = driver.findElement(By.xpath("//div[@class='alert alert-error' or @class='alert alert-success']")).getText();

С этого момента вы можете направить поток с простым, если оператор:

if(isFormAlreadySubmitted.equals("Details already exist"){ 
System.out.println("Form already submitted!"); 
} 
else if(isFormAlreadySubmitted.equals("Successfully added"){ 
System.out.println("Successfully added a new record!"); 
} 
else{ 
System.out.println("Something went wrong! Couldn't get alert text, is alert present?"); 
} 
1

Если одно сообщение существует, а другое нет, то вы получаете NoSuchelementException, потому что другого сообщения нет, это ожидаемое поведение. Вы должны поймать NoSuchelementException, если вы не хотите, чтобы ваши тесты потерпели неудачу в этом случае. Вы даже можете попробовать с driver.findElement(By.xpath("//div[contains(@class, 'alert']")).getText(); и проверить, какой текст у вас есть, но я не уверен, будет ли это работать, потому что я не знаю, как ваша страница ведет себя и выглядит.

6

Вы можете использовать или состояние с помощью cssSelector. Это будет проверять для обоих вариантов и вернуть первое из найденных

driver.findElement(By.cssSelector(".alert.alert-success, .alert.alert-error")).getText(); 
+0

Превосходный ответ, Спасибо за ваше драгоценное время и ответьте на мой вопрос. Большое вам спасибо. –

+0

Вы также можете просто выбрать селектор '.alert', если он возвращает нужный элемент без использования синтаксиса' или'. – mrfreester

+0

@mrfreester Возможно, однако, я не знаком с сайтом, поэтому я использую локаторы, предоставленные OP. – Guy