2017-04-14 10 views
1

私はいくつかの深刻な助けが必要です。 touchコマンドをcalabash-iosコンソールに入力すると、すべての場合と同じように動作します。たとえば、calabash-touchコマンドはcalabash-ios consoleで動作しますが、実行中ではありません

touch("view marked:'Select Accounts'") 

のように正確に機能します。

しかし、実際には全く同じコマンドでテストを実行しても動作しません。エラーはまったくスローされませんが、ボタンのクリックによって開始されるはずのアクションは発生していません。そして、それは終わりまで私をイライラしています...本当に私を殺しているのは、一貫した問題ではない、時にはタッチコマンドがうまく動作する、それ以外の時です。

他の誰かがこれに類似した問題を抱えていますか?その場合、問題の原因を発見できましたか?

ありがとうございます! Ade

答えて

0

タイミングに関連している可能性があります。あなたは実際のタッチの前に少し遅れが必要です。タッチの前にスリープ(0.5)などを追加することで、すぐにテストすることができます。 以前にwait_forステートメントを実行することもできますが、それでも動作させるには少し遅延を追加する必要があります。

0

アニメーションによって発生する可能性があります。 wait_for_none_animatingメソッドを使用できます。

Click here

1

最初に、要素をローカライズするベストプラクティスは一意のIDを使用しています。これを達成するには、XcodeでaccessibilityIdentifierのapp要素のフィールドを入力する必要があります。

これは、オブジェクトを識別する最も正確な方法です。アプリのオブジェクトのtextまたはaccessibilityIdentifierプロパティで試合を探している「と記された」構文を使用

query("* id:'account_select_button'") 

クエリ:その後、あなたは、このようなクエリを使用することができます。このメソッドは、多言語アプリケーションやラベルが変更された場合には適していません。待っている要素については

あなたはsleepの代わりにこれを使用する必要があります。デフォルトでは

wait_for_element_exists("* marked:'Select Accounts'", :timeout => 10) 
touch("* marked:'Select Accounts'") 

は、ひょうたんのクエリにのみ表示オブジェクトの属性で検索します。要素はビューポートの外にある場合、あなたはそれで何かを行うことができます前に、要素が表示されるまでスクロールする必要があります。

while (query("* marked:'Select Accounts'").empty?) == true 
    swipe :up  #it performs scroll down, swipe :up equals scroll up  
    sleep 1  #in this case you have to wait between two swipes 
end 

私が試したことがないが、別の方法があります。私が読んだように、この式は、要素の可視性に関係なく、すべてのビューでクエリを実行します。

query("all marked:'Select Accounts'") 
query("all view marked:'Select Accounts'") 
query("all * marked:'Select Accounts'") 
関連する問題