ruby selenium-webdirver を使用して、入力要素が編集可能かどうかを確認したい。これを確認するために、IDE で selenium コマンド - verifyEditable を使用しました。Rubyで、要素が編集可能かどうかを検証する方法(方法)はありますか?
2 に答える
試しました$driver.find_element(:id, "elementID").enabled?
か?これは、入力フィールドであることがわかっている要素のみをチェックしている限り機能します。
私のテストでは、ブラウザー コントロールをホストする同じクラス/モジュールでメソッドを宣言するだけです。
def element_enabled?(how, what)
if $driver.find_element(how, what).displayed? && $driver.find_element(how, what).enabled? then
true
else
false
end
rescue Selenium::WebDriver::Error::NoSuchElementError
false
end
そして、次の方法でメソッドを使用できます。
element_enabled?(:id, "elementID")
これfoo.displayed? && foo.enabled?
により、入力しようとしている要素が現在表示されていない場合に、スクリプトでエラーが発生するのを防ぐことができます。
rescue
コマンドを含めるfalse
と、ページに存在しない要素を要求した場合にメソッドが返されるだけです。ブロックを省略した場合rescue
、スクリプトは終了し、要素が存在しないことを訴える Selenium エラー メッセージを返します。私の好みは常にtrue
orfalse
代わりに取得することです ( のようにverifyEditable
) が、要素が存在しない場合 ( のように) スクリプトをエラーで終了させたい場合がありますassertEditable
。
disabled = find('input_id')['disabled']
disabled.should_not == 'disabled'
disabled.should_not == 'true' # just to be safe
または、セレンドライバーを使用すると、値を入力するだけで済みます。
fill_in 'input_id_or_label', with: "some input value"
フィールドが無効になっている場合、セレンは文句を言います(ただし、一部のヘッドレスドライバーは文句を言いません。たとえば、capybara-webkit)。
Selenium::WebDriver::Error::InvalidElementStateError: Element is disabled and so may not be used for actions
ただし、このようなビューテストを実行するためにセレンを使用することはお勧めできません。速度が遅く、不安定になる可能性があり、結果はドライバーごとに異なる場合があります。デフォルトで入力が無効になっている状態でビューがレンダリングされる場合、ビューテストがその役割を果たします。それ以外の場合、入力を無効にするjavascriptの場合は、単純なjasmine / mochajavascriptテストである必要があります。