2014-06-28 43 views
-1

我有以下佈局:Robotium不滾動到我的片段和活動文本視圖

enter image description here

正如你所看到的,Robotium填補了文本爲EditText意見。它還會滾動並填寫「玩家姓名」後面的「團隊」字段。但是,此後有一個Spinner,在textView中有適當的標籤,而solo.searchForText()不會向下滾動以查看。這是因爲拆分Action Bar?在測試中我能做些什麼來彌補這個問題?

試圖訪問相關的代碼Spinner

 Spinner playerPositionSpinner = (Spinner) solo.getView(R.id.player_position_text); 
     @SuppressWarnings("unchecked") 
     ArrayAdapter<CharSequence> playerPositionAdapter = (ArrayAdapter<CharSequence>) playerPositionSpinner 
       .getAdapter(); 
     int newIndex = playerPositionAdapter.getPosition(card 
       .getPlayerPosition()); 
     int currIndex = playerPositionSpinner.getSelectedItemPosition(); 

     boolean isPositionVisible = solo.searchText(
       solo.getString(R.string.player_position_label), true); 
     solo.waitForView(R.id.player_position_text); 

     boolean isConditionVisible = solo.searchText(solo.getString(R.string.condition_label), 
       false); 
     int index = -1; 
     if (!isConditionVisible && isPositionVisible) { 
      index = 0; 
     } 
     if (isPositionVisible && isConditionVisible) { 
      index = 1; 
     } 

     Assert.assertFalse("Invalid index", index == -1); 
     solo.pressSpinnerItem(index, newIndex - currIndex); 

的形式片段的XML佈局:

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@id/scroll_card_details" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <TableLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:stretchColumns="1" > 

     <TableRow> 

      <CheckBox 
       android:id="@id/autograph" 
       android:text="@string/autograph_label" 
       android:layout_span="2" /> 
     </TableRow> 

     <TableRow> 

      <TextView 
       android:text="@string/condition_label" 
       android:textStyle="bold" /> 

      <Spinner 
       android:id="@id/condition" 
       android:hint="@string/condition_hint" 
       android:singleLine="true" /> 
     </TableRow> 

     <TableRow> 

      <TextView 
       android:text="@string/brand_label" 
       android:textStyle="bold" /> 

      <AutoCompleteTextView 
       android:id="@id/brand_text" 
       android:completionThreshold="1" 
       android:hint="@string/brand_hint" 
       android:inputType="textCapWords" 
       android:selectAllOnFocus="true" 
       android:singleLine="true" > 

       <requestFocus /> 
      </AutoCompleteTextView> 
     </TableRow> 

     <TableRow> 

      <TextView 
       android:text="@string/year_label" 
       android:textStyle="bold" /> 

      <EditText 
       android:id="@id/year_text" 
       android:hint="@string/year_hint" 
       android:inputType="number" 
       android:selectAllOnFocus="true" 
       android:singleLine="true" /> 
     </TableRow> 

     <TableRow> 

      <TextView 
       android:text="@string/number_label" 
       android:textStyle="bold" /> 

      <EditText 
       android:id="@id/number_text" 
       android:hint="@string/number_hint" 
       android:inputType="number" 
       android:selectAllOnFocus="true" 
       android:singleLine="true" /> 
     </TableRow> 

     <TableRow> 

      <TextView 
       android:text="@string/value_label" 
       android:textStyle="bold" /> 

      <EditText 
       android:id="@id/value_text" 
       android:hint="@string/value_hint" 
       android:inputType="numberDecimal" 
       android:selectAllOnFocus="true" 
       android:singleLine="true" /> 
     </TableRow> 

     <TableRow> 

      <TextView 
       android:text="@string/count_label" 
       android:textStyle="bold" /> 

      <EditText 
       android:id="@id/count_text" 
       android:hint="@string/count_hint" 
       android:inputType="number" 
       android:selectAllOnFocus="true" 
       android:singleLine="true" /> 
     </TableRow> 

     <TableRow> 

      <TextView 
       android:text="@string/player_name_label" 
       android:textStyle="bold" /> 

      <AutoCompleteTextView 
       android:id="@id/player_name_text" 
       android:completionThreshold="1" 
       android:hint="@string/player_name_hint" 
       android:inputType="textCapWords" 
       android:selectAllOnFocus="true" 
       android:singleLine="true" /> 
     </TableRow> 

     <TableRow> 

      <TextView 
       android:text="@string/team_label" 
       android:textStyle="bold" /> 

      <AutoCompleteTextView 
       android:id="@id/team_text" 
       android:completionThreshold="1" 
       android:hint="@string/team_hint" 
       android:inputType="textCapWords" 
       android:selectAllOnFocus="true" 
       android:singleLine="true" /> 
     </TableRow> 

     <TableRow> 

      <TextView 
       android:text="@string/player_position_label" 
       android:textStyle="bold" /> 

      <Spinner 
       android:id="@id/player_position_text" 
       android:hint="@string/player_position_hint" 
       android:singleLine="true" /> 
     </TableRow> 

    </TableLayout> 

</ScrollView> 

回答

0

顯然Robotium找到代替了滾動廣告。 Robotium不知道如何處理它,只是忽略它而不是導致任何錯誤。

我結束了寫我自己的函數做滾動:

public static void scrollDown(final ScrollView scrollView) { 
    scrollView.post(new Runnable() { 
     @Override 
     public void run() { 
      scrollView.arrowScroll(ScrollView.FOCUS_DOWN); 
     } 
    }); 
} 
+1

我有同樣的問題,這是我做的: 'solo.sendKey(Solo.DOWN); solo.sendKey(Solo.DOWN); solo.sendKey(Solo.DOWN);' –

0

你試過:

solo.pressSpinnerItem(0, 1); 

第一個參數是微調的指標來使用,第二個參數是微調框中的項目進行選擇。

+0

靜態索引不起作用,因爲我希望我的測試對很多屏幕尺寸都是靈活的。在較大的屏幕上,可能有兩個可見的旋轉器。 –

+0

在較小的屏幕上,我想要點擊的微調框可能會隱藏起來。當我做'pressSpinnerItem(1,x)'時,我得到「兩個紡紗機沒有找到!」 –