Перейти к содержимому

Фотография

WebDriver проверка текстов внутри элемента.


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 13

#1 Sadnes

Sadnes

    Новый участник

  • Members
  • Pip
  • 27 сообщений
  • ФИО:Tom Sadnes


Отправлено 03 октября 2013 - 12:43

// нахожу элемент
driver.findElement(By.cssSelector(".title"))
// далее необходимо проверить текст в этом элементе

// вот такая строка берет видимый текст и ее можно выводить в консоли с помощью System.out.println() но не проверяет
driver.findElement(By.cssSelector(".title")).getText()

// пробовал вот так, не получается
driver.findElement(By.cssSelector(".title")).getText().contains("text");

// подскажите пожалуйста, как можно это реализовать
  • 0

#2 Petrov.Sergey

Petrov.Sergey

    Опытный участник

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 03 октября 2013 - 13:15

// нахожу элемент
driver.findElement(By.cssSelector(".title"))
// далее необходимо проверить текст в этом элементе

// вот такая строка берет видимый текст и ее можно выводить в консоли с помощью System.out.println() но не проверяет
driver.findElement(By.cssSelector(".title")).getText()

// пробовал вот так, не получается
driver.findElement(By.cssSelector(".title")).getText().contains("text");

// подскажите пожалуйста, как можно это реализовать

1) вывод на консоль, естественно, не проверяет ничего.
2) метод .contains(String str) возвращает булевское значение TRUE/FALSE, означающее "содержит"/"не содержит". Этот ответ Вам и нужно обработать.

Если Вы пользуетесь JUNIT-ом, то вполне достаточно использовать:
assertTrue(driver.findElement(By.cssSelector(".title")).getText().contains("text"));

  • 0
Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

#3 Sadnes

Sadnes

    Новый участник

  • Members
  • Pip
  • 27 сообщений
  • ФИО:Tom Sadnes


Отправлено 03 октября 2013 - 13:17

1) вывод на консоль, естественно, не проверяет ничего.
2) метод .contains(String str) возвращает булевское значение TRUE/FALSE, означающее "содержит"/"не содержит". Этот ответ Вам и нужно обработать.

Если Вы пользуетесь JUNIT-ом, то вполне достаточно использовать:

assertTrue(driver.findElement(By.cssSelector(".title")).getText().contains("text"));


пользуюсь TestNG
вот так тоже не получается
assertEquals("text", driver.findElement(By.cssSelector(".title")).getText());
  • 0

#4 Petrov.Sergey

Petrov.Sergey

    Опытный участник

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 03 октября 2013 - 13:24


1) вывод на консоль, естественно, не проверяет ничего.
2) метод .contains(String str) возвращает булевское значение TRUE/FALSE, означающее "содержит"/"не содержит". Этот ответ Вам и нужно обработать.

Если Вы пользуетесь JUNIT-ом, то вполне достаточно использовать:

assertTrue(driver.findElement(By.cssSelector(".title")).getText().contains("text"));


пользуюсь TestNG
вот так тоже не получается
assertEquals("text", driver.findElement(By.cssSelector(".title")).getText());

Потому что EQUALS - это полное совпадение, а CONTAINS - это включение.
Пример:
assertEquals("мама", "мама мыла раму"); // выдаст AssertionError 
assertTrue((new String("мама мыла раму")).contains("мама")); // пройдёт успешно

  • 0
Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

#5 Sadnes

Sadnes

    Новый участник

  • Members
  • Pip
  • 27 сообщений
  • ФИО:Tom Sadnes


Отправлено 03 октября 2013 - 13:31

Потому что EQUALS - это полное совпадение, а CONTAINS - это включение.
Пример:

assertEquals("мама", "мама мыла раму"); // выдаст AssertionError 
assertTrue((new String("мама мыла раму")).contains("мама")); // пройдёт успешно


Понятно. Так что же мне использовать?)
  • 0

#6 Petrov.Sergey

Petrov.Sergey

    Опытный участник

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 03 октября 2013 - 13:34


Потому что EQUALS - это полное совпадение, а CONTAINS - это включение.
Пример:

assertEquals("мама", "мама мыла раму"); // выдаст AssertionError 
assertTrue((new String("мама мыла раму")).contains("мама")); // пройдёт успешно


Понятно. Так что же мне использовать?)

Интересно, что же Вам тогда стало понятно?

Если Вы точно знаете текст, который нужно проверить, то можно по EQUALS.
Если Вы знаете только часть текста (например, в найденном элементе 100% должно присутствовать слово "мама", а всё остальное - не важно), то необходимо использовать CONTAINS.

Всё зависит от конкретного случая.
  • 0
Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

#7 Sadnes

Sadnes

    Новый участник

  • Members
  • Pip
  • 27 сообщений
  • ФИО:Tom Sadnes


Отправлено 03 октября 2013 - 13:40

Интересно, что же Вам тогда стало понятно?


видимо ничего)

Если Вы точно знаете текст, который нужно проверить, то можно по EQUALS.
Если вы знаете только часть текста (например, в найденном элементе 100% должно присутствовать слово "мама", а всё остальное - не важно), то необходимо использовать CONTAINS.

Всё зависит от конкретного случая.


Я точно знаю текст, который надо проверять.
  • 0

#8 Petrov.Sergey

Petrov.Sergey

    Опытный участник

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 03 октября 2013 - 13:53

Я точно знаю текст, который надо проверять.

Тогда driver.findElement(By.cssSelector(".title")).getText() в студию!
Желательно, обрамить его тегом {quote}
  • 0
Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

#9 appmen

appmen

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений
  • ФИО:Victor

Отправлено 03 октября 2013 - 15:14

Sadnes, а вы можете выложить свой код теста?
  • 0

#10 Sadnes

Sadnes

    Новый участник

  • Members
  • Pip
  • 27 сообщений
  • ФИО:Tom Sadnes


Отправлено 03 октября 2013 - 15:17

Sadnes, а вы можете выложить свой код теста?



@Test
public void testUntitled() throws Exception { driver.get(baseUrl + "/");
// Open page BECOME A MEMBER
driver.findElement(By.cssSelector(".create")).click();
// Search title
assertEquals("step 1: COSTS & TERMS", driver.findElement(By.cssSelector("div.title")).getText());
// Select radio bottom costs
driver.findElement(By.cssSelector(".classic>tbody>tr>td>label")).click();
// Select radio bottom license
driver.findElement(By.id("w")).click();
// Next step
driver.findElement(By.cssSelector("button.next.brown")).click();
  • 0

#11 appmen

appmen

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений
  • ФИО:Victor

Отправлено 04 октября 2013 - 07:09

ну, вроде всё правильно. Уже всё работает? Если нет, то можно проверить наличие элемента с помощью
n = driver.findElements(By.cssSelector("div.title")).size()
если вернёт 0, значит элемента нет
Ещё ваш див может быть во фрейме (iframe), тогда нужно переключиться в этот фрейм и работать внутри него
  • 0

#12 Petrov.Sergey

Petrov.Sergey

    Опытный участник

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 04 октября 2013 - 07:41

assertEquals("step 1: COSTS & TERMS", driver.findElement(By.cssSelector("div.title")).getText());

Семантически правильнее было бы написать так:
assertEquals(new String("step 1: COSTS & TERMS").toLowerCase(), driver.findElement(By.cssSelector("div.title")).getText().toLowerCase());

ну, вроде всё правильно. Уже всё работает? Если нет, то можно проверить наличие элемента с помощью

n = driver.findElement(By.cssSelector("div.title")).size()
если вернёт 0, значит элемента нет

Вы, наверное, имели в виду

n = driver.findElements(By.cssSelector("div.title")).size()


  • 0
Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

#13 appmen

appmen

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений
  • ФИО:Victor

Отправлено 04 октября 2013 - 11:38

да, конечно. Забыл добавить "s" :sad:
  • 0

#14 leftCh

leftCh

    Постоянный участник

  • Members
  • PipPipPip
  • 179 сообщений

Отправлено 10 октября 2013 - 10:35

Автор, проверь на лишние пробелы и переводы строки текст, который возвращает .getText()
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных