2015-08-24 2 views
0

Как бы один подтвердить, что на странице следующие текстовые поля существует:Проверка фактического текста Значение против Прогнозный для многих областей - Селен

Имя Фамилия DOB ActionNumber PageNumber

все они имеют атрибуты ID имени поля.

кроме использования (Pysdo кода)

String ActualSurnameText = driver.findElement(By.ID("Surname")).getText(); 
If ActualSurnameText = ExpectedSurnameText then Pass else fail 

их smater более эффективен

EDIT

Вероятно, следует отметить, что каждая метка вложена в DIV так структура соответствует

<div class="top"> 
<div class="middle"> 
    <div class="lower"> 
    <label class="lable"> 
    <div class="bottom"> 
    <input> 

EDIT Так в настоящее время я уже declaired массив

String[] ExpectedFieldNAme = new String[4] 
ExpectedFieldName[0] = "Name"; 
ExpectedFieldName[0] = "Surname"; 
ExpectedFieldName[0] = "DoB"; 
ExpectedFieldName[0] = "ActionNumber"; 
ExpectedFieldName[0] = "PAgeNumber"; 

<need to code for a loop that pysdo goes> 
For (int i = 0, i < div.size(); i++){ 
does div.label.text = anything value in ExpectedFieldName; 
print yes it does} 
print no it doesnt 
repeat untill all the div labels have been identified` 
+0

Если поле не существует, findElement генерирует исключение, и ваш тест не выполняется. Вам не нужно делать 'getText' и проверять его. – KDM

+0

@KDM Что делать, если элемент существует, но не содержит текст, который вы ожидаете? Вот почему вам нужно сделать '.getText()' и проверить, содержит ли ожидаемый текст. – JeffC

+0

@JeffC Я думаю, что требование состоит в том, чтобы искать присутствие элемента. – KDM

ответ

-1

Ответ вы Вопрос Как бы один подтвердить, что на странице следующие текстовые поля существует: Ниже команда будет возвращать только Правда если ваша страница содержит ваш желаемый текст.

assertTrue(driver.getPageSource().contains("Text-you-are-Looking-for")); 

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

+0

@Jeff Мой ответ более точно говорит о странице, а не о конкретном веб-элементе. Проверьте первую строку вопроса. И getText() работает, когда вы знаете этот конкретный веб-элемент. Что делать, если страница содержит более 100 WebElements? Будете ли вы использовать GetText() для всех 100 элементов? –

+0

... и он утверждает, что «у всех есть атрибуты идентификатора имени поля», поэтому нет, вы не будете искать всю веб-страницу для текста, вы найдете элемент по идентификатору, а затем выполните '.getText() '. Он также не сказал, что есть 100 элементов, он перечислил 5, что ему нужно. На любой приличной веб-странице есть WAY более 100 элементов ... вот почему есть все различные методы поиска, доступные для сужения поиска быстро. – JeffC

0

Существует несколько библиотек, которые уже существуют для таких валидаций. Я бы посоветовал вам почитать несколько, попробовать несколько и найти тот, который вам нравится. TestNG, JUnit - это пара популярных, но есть и другие.

С TestNG существует множество функций проверки достоверности. Например, для сравнения двух строк

assertEquals("Verify name", ExpectedSurnameText, ActualSurnameText); 

Я понимаю, что вы пытаетесь сделать, и это, кажется, «лучше», меньше кода, чтобы сделать это таким образом, но это не лучше. Лучшая проверка - это поиск ожидаемого текста, где вы ожидаете, что он предотвратит ложные срабатывания. Простой пример может помочь. Предположим, вы ищете текст «DOB», это метка поля. Вы просматриваете весь текст страницы. Что делать, если у вас есть инструкции в другом месте на странице, в которых указано: «Пожалуйста, введите свою ДО». Однажды текст метки поля исчез, но ваш сценарий все еще находит «ДОБ» на странице, потому что он соответствует тексту инструкции вместо метки. Это опасность не искать ожидаемый текст в ожидаемом месте. То, что вы хотите сделать что-то вроде этого

// assume expected text variables are defined earlier in the test 

// Name 
String ActualName = driver.findElement(By.id("Name")).getText().trim(); 
assertEquals("Verify name", ExpectedName, ActualName); 

// Surname 
String ActualSurname = driver.findElement(By.id("Surname")).getText().trim(); 
assertEquals("Verify Surname", ExpectedSurname, ActualSurname); 

Вот только две строки кода в поле, вы не собираетесь, чтобы получить какой-либо лучше, чем с массивом, потому что вы все еще должны сделать проверку (1 линия), и вам нужно загрузить массив (1+ строк)

+0

Я бы хотел, чтобы это произошло; вместо 'assertEquals (" Verify name ", ExpectedSurnameText, ActualSurnameText)'; 20 раз для каждой метки на странице; чтобы иметь один FOR LOOP (?), чтобы сказать 'Для (каждая метка в DIV (Class = Lower)) мой ожидаемый текст соответствует ActualText' Итак, какой-то тип массива для ожидания ожидаемого может быть - но это все новое мне ... – xTNAx

+0

Я не понимаю вашего заявления. – JeffC

+0

Хорошо, давайте попробуем это так: вроде того, что @Rupesh Shinde сказал о том, что у вас много ярлыков на странице, вы бы не хотели manaully code для каждой labl, а скорее имели бы цикл, чтобы сказать, перейти на каждую метку на странице и сделать это соответствовать любому из значений, указанных в моем массиве? – xTNAx

Смежные вопросы