...検索で要素が見つからない場合、デザイナー例外を作成するにはどうすればよいですか?
if find(:xpath, '*[@id="broken_path"]/div/a') == nil #or false?
raise 'designer error message'
end
は、私が試してみて、キャッチする必要がありますか?
...検索で要素が見つからない場合、デザイナー例外を作成するにはどうすればよいですか?
if find(:xpath, '*[@id="broken_path"]/div/a') == nil #or false?
raise 'designer error message'
end
は、私が試してみて、キャッチする必要がありますか?
カピバラfind
どちらかが要素を返すか、例外を発生させます。あなたはwithin
ブロック(またはその他の同期カピバラブロック)内のようにメソッドを呼び出した場合、それはカピバラので、待機/再試行の動作の一部を倒すことが救助
def find_my_element
find(:xpath, '*[@id="broken_path"]/div/a')
rescue Capybara::ElementNotFound
raise 'designer error message'
end
注意を使用する必要があるだろうことをキャッチするために、 ElementNotFoundエラーが表示されます。あなたはカピバラのメッセージで返されます、あなた自身の説明を指定することができ、独自のセレクタを登録したほうが良いかもしれ:: ElementNotFoundは(参照 - https://github.com/teamcapybara/capybara/blob/master/lib/capybara/selector.rb#L67を - カピバラが例としてセレクタを提供するために)
Capybara.add_selector(:my_selector) do
xpath { |_unused| '*[@id="broken_path"]/div/a' }
# could also be written as
# css { |_unused| '#broken_path div a' }
describe do |_options|
"my description"
end
end
find(:my_selector)
だけで独自の例外クラスを作る:
class MyFancyException < StandardError
end
次に、あなたがそれをraise
ことができます。
raise MyFancyException, "Fancy error message"
あなたはRubyでtry
/catch
を必要としません。あなたはrescue
を使用します。
def example
do_stuff
rescue MyFancyException => e
# e contains exception with message
end
方法を最初にデフォルトの例外を呼び出さないようにするにはどうすればいいですか? – TangibleDream
例外を「レスキュー」して自分自身を再起動する必要があります。 – tadman