1

xamarin フォームのラジオボタンでプレス イベントを実行しようとしています。ラジオボタンには 0 から 5 までのインデックスが付けられています。

これを実行query("RadioButton", :contentDescription) すると、6 つの radioButton (0 から 5 までのインデックス) が返されます。ラジオボタンは 2 つのボタンのグループに属しているため、固有のテキストはありません。したがって、ここでのインデックス値 2 から 5 はグループ RadioGroup の子であり、テキスト ラベルはすべて同じです。

私がやろうとしているのは、特定のインデックスを使用して radioButton にプレス イベントを設定することです。

私が持っている機能ファイルで:次にRadioButton番号0を押します

というカスタム ステップ定義を作成し、radio_button_steps.rbこれをデフォルトの calabash-android ステップ定義フォルダーに保存しました。

<driveLetter>:\Ruby193\lib\ruby\gems\1.9.1\gems\calabash-android-0.5.8\lib\calabash-android\steps

の構文は次のとおりradio_button_steps.rbです。

Given /^I press the "([^\"]*)" RadioButton$/ do |text|
  tap_when_element_exists("android.widget.RadioButton {text CONTAINS[c] '#{text}'}")
end

Then /^I press RadioButton number (\d+)$/ do |index|
  tap_when_element_exists("android.widget.RadioButton index:#{index.to_i-1}")
end

結果は次のように返されます。

Then(/^I press RadioButton number (\d+)$/) do |arg1|
  pending # express the regexp above with the code you wish you had
end

二重引用符または単一引用符を使用して、または引用符なしで機能ファイルにインデックス値を配置しようとしましたが、それでもエラーが発生します。今、私は完全に迷っています...

誰でもアイデアはありますか?

4

1 に答える 1

2

クエリでは、次のようにインデックスを使用します query("RadioButton index:0")

したがって、ステップ定義のメソッドは次のようになります

tap_when_element_exists("RadioButton index:#{arg1}")

編集:申し訳ありませんが、あなたの質問を読み直しましたが、実際には以前に答えていませんでした。then ステップを機能させるには、次の行を含む機能ファイルが必要です。

Then I press RadioButton number 1

あなたが試したように見えるので、それは問題ではありません。実際のエラーは、作成したステップ定義をひょうたんが認識できないことを示しています。ひょうたんは、シナリオやステップ定義などを処理するビットであるキュウリを使用します。キュウリは、プロジェクトの「機能」ディレクトリ内の任意の場所でステップ定義を探します。ここにファイルを作成し、その中にステップ定義を入れると、テスト実行で使用できるようになります。

于 2015-04-27T08:54:24.323 に答える