Проверьте <div> текст Ruby

0

Я пишу сценарий с использованием Ruby и Watir, который должен распечатать результат смены монет. HTML выглядит так, когда вы выигрываете:

<div id="result" style="" class="center">
      <div id="win" class="bold center">You win!</div>
      <div id="lose" class="bold center"></div>

Когда вы проигрываете, текст в win div исчезает, и You lose! появляется в lose div. Как вы можете видеть, result содержит как win и lose. Я считаю, что одно или оба из этих наблюдений важны, но я не знаю, как использовать инструкцию if чтобы выяснить, произошла ли победа или потеря.

Теги:
watir

2 ответа

1
Лучший ответ

Вы можете проверить, включен ли текст в соответствующий <div>. Например:

if browser.div(:id => "win").text.include? "You win!"
  puts "won"
elsif browser.div(:id => "lose").text.include? "You lose!"
  puts "lost"
else
  puts "something went wrong with the coin flip"
end

И более простой пример:

if browser.div(:id => "win").text.include? "You win!"
  puts "won"
else
  puts "lost"
end

Для получения дополнительной информации об условных структурах управления ознакомьтесь с разделами If и UnExpression в главе " Выражения" в " Программирование Ruby".

  • 0
    Спасибо друг. Это простой ответ, который я искал. Я пытался использовать ".text =" вместо ".text.include?" Это потрясающе.
0

Это должно дать вам представление:

<% if @result.heads? %>
  <div id="win" class="bold center">You win!</div>
<% else %>
  <div id="lose" class="bold center"></div>
<% end %>

Это зависит от вашей модели результата, выглядящей примерно так:

class Result

  def initialize
    @heads = [true, false].sample
  end

  def heads?
    @heads
  end

  def tails?
    !heads?
  end

end
  • 0
    Я только начал Ruby два дня назад, извините за вопрос, но как мне заставить его печатать в консоли «Вы выиграли» или «Вы проиграли»? Я не совсем уверен, что на самом деле делает ваше заявление if. Я бы заменил <div id = "win" ...> на "ставит" Ты выиграл! "", А другой на "ставит" Ты проиграл! "
  • 0
    На самом деле, поцарапайте это. Поскольку только один элемент div (выигрыш / проигрыш) одновременно содержит текст, существует ли более простой способ проверить, является ли элемент div пустым? Как бы я это сделал?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню