記事の概要
TestCafeについての記述の5回目です。
現在、inputタグでtype='time'関連のパーツを作ってテストしているのですが、どうもこのあたりの操作についてはTestCafeの動作に問題があるようです。
今回はその問題について記述しておきます。
IEでの「×」はクリックできない
クリック操作でカーソル位置や座標を指定してクリックできるのですが、IEのInputでテキストのクリアの為にoffsetXを使って「×」をクリックしても反応しません。他では試していないのですが、どうも本当の意味でのクリックではなさそうです。(実行時の大きなマウスはクリックしているように見えるのですが)
空白が入力できない
この仕様が不明なのですが、typeTextメソッドで空白が設定できません。入力必須のエラーチェックでは結構苦労します。
上記で書いたように入力内の「×」はクリックできないので、結局pressKeyメソッドで"ctrl+a delete"を送信する必要があります。
type=text以外ではキー入力が制限されている
上記の空白が入力できないの続きですが、pressKeyを利用して空白を入力しようとしても、type=timeでは動作しません。どうも、type=text以外は入力に制限をかけているようで(timeでしか試していないので、違うかもしれませんが)text以外の特殊な入力では入力フォーマットが制限されていることが絡んでいるのか、いろいろできない様です。結果、IEでは「type='time'」の入力を空にすることはできませんでした。
IE以外ではtype=timeの空白は「--:--」
IE以外のChromeやFireFoxではtype=timeの場合にtypeTextメソッドで「--:--」を入力すると、中身が空になるようです。IEで実行すると、値にそのまま「--:--」が入っているようです。
type=timeの時に入力しただけではchangeイベントが発生しない
よくわからないのですが、ChromeやFireFoxでtype=timeの時に時刻を入力しても、そのページのJavaScriptで設定しているchangeイベントが反応しません。どうもchangeイベントが発生していない様です、他の入力をクリックさせてもblurも反応しません。(IEはこちらの都合で試してません)
いろいろ調べていくと、入力後に「pressKey」でEnterキーを送信すると反応します。deleteキーで入力を消せないのに不思議ですが...。
結局できないこと
今のところ、私の作業には影響はないのですが、type=timeの場合にIEでは内容をクリアする方法が見当たりません。知っている方が居られたらコメントください。
最近TestCafeのバージョンを確認してないので、もしかしたら改選されているかもしれませんが。