結論
input要素で表示されている文字列の検証はvalue属性の値を検証する必要がある。
- input要素のvalue属性の値の検証は、
[value='値']
で検証対象を取得できる - textarea要素の文字列の検証は、
text: 'テキスト'
でタグで囲まれた文字列を検出できる
input要素とtextarea要素のテキストの表示方法の違い
- input要素: value属性で表示テキストの値を持つ
- textarea要素: 開始タグと終了タグで囲まれたテキストが表示される
具体例
例) 以下のフォーム内に表示されている文字列の表示テストを行う
<form action="..." accept-charset="UTF-8" method="post">> <div> <input type="text" value="インプットの文字列" name="..." id="input"> <textarea name="..." id="textarea">テキストエリアの文字列</textarea> </div> <div> <input type="submit" name="commit" value="更新する"> </div> </form>
失敗するテスト
input要素の文字列はassert_text
では検出できない(input内の文字列はテキストでは無いため)。
class DisplayTest < ApplicationSystemTestCase test 'インプットの文字列が表示される' do # テスト対象の文字列を取得できないためエラー assert_text "インプットの文字列" # パスする assert_text "テキストエリアの文字列" end end
成功するテスト
input要素のvalueの値を検証することで文字列を検出できる。
class DisplayTest < ApplicationSystemTestCase test '' do # input idを持つインプット要素のvalue要素の値を検証 assert_selector "input#input[value='インプットの文字列']" assert_text "テキストエリアの文字列" end end
参照
感想
input要素の文字列が検出できずにハマった... HTMLもテストも奥が深い。