Watir: как проверить, что текст ОТСУТСТВУЕТ на веб-странице

#ruby #browser #text #watir #verify

#ruby #браузер #текст #watir #проверить

Вопрос:

Я пишу тест, в котором удаляю запись, и мне нужно убедиться, что запись больше не присутствует после того, как я ее удалил. Я знаю, как проверить, что текст записи присутствует на странице, с помощью «browser.text.include?», но есть ли способ, которым я могу проверить, что текст отсутствует вместо этого? Мне нужно, чтобы тест завершился неудачей, если текст все еще присутствует после того, как он предположительно был удален. Я искал, но единственные обращения, которые я получаю при поиске, говорят мне, как проверить, что текст присутствует, что противоположно тому, что мне нужно.

Большое вам спасибо.

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

1. Не могли бы вы просто проверить отрицание? Например. Assert. Неверно (т.Е. Содержит текст(«Foo», «Запись не была удалена».)

Ответ №1:

browser.text.include? возвращает логическое значение (на самом деле тип truetype или falsetype, но сейчас не время для этого обсуждения), поэтому его отрицание приведет к обратному результату поиска.

 do_a_faily_thing if not browser.text.include? "badgers are eating my face"
  

Не стесняйтесь настраивать под свои нужды. PS. По сути, это ответ ry, только с барсуками, поедающими лица.

Добавлено для исторического интереса по предложению Чака:

 do_a_faily_thing unless browser.text.include? "face-eating-badger-eating-badgers are eating my face-eating badgers"
  

Добавлено, чтобы показать пример «else»:

 if browser.text.include? "badgers are eating my face"
   do_a_thing
else
   phew_no_badgers
end
  

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

1. Ага, спасибо вам обоим! Я использовал части каждого — я настроил его на, если browser.text.include? «барсуки едят мое лицо» = true затем выполните сбой, иначе продолжите работу со сценарием. Это сработало отлично!

2. Обычно мне не нравится ‘если только’, но в данном случае я бы сказал, что это читается лучше, чем ‘если нет’. @Kim, то, что @kinofrost предлагает здесь, в основном является способом ruby делать именно то, что вы говорите.. он просто сначала помещает операцию, а затем условие, при котором эту операцию следует выполнить.

3. @Kim, рад услышать из вашего комментария, что мы смогли вам помочь. Однако еще лучше, как с точки зрения признания заслуг тех, кто предоставил нужные вам ответы, так и с точки зрения определения «правильных» ответов для других читателей, «принять» ответ (ы), который сработал для вас. (ставить на них галочки тоже неплохо, но большая зеленая галочка, когда ответ принят, — это то, что отдает должное тем, кто ответил, и определяет рабочие ответы для других)

Ответ №2:

Как насчет:

    !browser.text.include?("my string")
  

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

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

Ответ №3:

или в зависимости от того, какую платформу тестирования вы используете

 # RSpec and/or Cucumber
browser.text.include?("my string").should != true

# TestUnit
assert(browser.text.include?("my string") != true)
  

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

1. для этой цели в Rspec даже есть метод «should_not»

Ответ №4:

Если запись обернута HTML-элементом, используя exist? метод — это еще один способ проверить существование.

удаленная запись (пример)

 <p class='foo'>bar</p>
  

проверить скрипт

 p(:class,'foo').exist?