2014-06-06 12 views
6

Cách tự động hóa bộ chọn số bằng cách sử dụng espresso. Tôi muốn đặt thời gian cụ thể trong timePicker bằng cách sử dụng espresso.Tự động chọn số trong android bằng cách sử dụng espresso

+0

Chúng tôi cần thêm chi tiết để trợ giúp. Cho chúng tôi biết bạn đã làm gì cho đến nay, nơi bạn đang gặp khó khăn và cung cấp bất kỳ mã nào có liên quan. – Maxwell

+0

@Maxwell Tôi đang sử dụng espresso và tôi muốn chọn thời gian từ thanh ghi giờ. Tôi muốn cuộn qua bộ chọn số để chọn một số. Tôi có thể nhấp vào bộ chọn số và chỉnh sửa văn bản của bộ chọn số đã chọn. Dưới đây là đoạn code mà tôi đã sử dụng: Pranit

Trả lời

14

Để phù hợp với một Xem theo tên lớp của nó bạn chỉ có thể sử dụng:

onView(withClassName(Matchers.equalTo(TimePicker.class.getName()))); 

Một khi bạn có đối tượng ViewInteraction bạn có thể đặt một giá trị trên đó xác định và sử dụng một ViewAction như sau:

public static ViewAction setTime(final int hour, final int minute) { 
     return new ViewAction() { 
      @Override 
      public void perform(UiController uiController, View view) { 
       TimePicker tp = (TimePicker) view; 
       tp.setCurrentHour(hour); 
       tp.setCurrentMinute(minute) 
      } 
      @Override 
      public String getDescription() { 
       return "Set the passed time into the TimePicker"; 
      } 
      @Override 
      public Matcher<View> getConstraints() { 
       return ViewMatchers.isAssignableFrom(TimePicker.class); 
      } 
     }; 
    } 
+0

Điều này hoạt động tốt, nhưng vì một lý do nào đó nó không gọi giá trị người nghe đã thay đổi? –

+0

@JoeMaher bạn có tìm thấy giải pháp thay thế về trình nghe thay đổi không kích hoạt không? – Sheychan

+0

@JoeMaher yeah, người nghe thay đổi cũng không kích hoạt cho tôi. Bất kỳ phát hiện nào về điều này? – user1777136

7

Khớp chế độ xem và sau đó thực hiện hành động:

ViewInteraction numPicker = onView(withClassName(Matchers.equalTo(NumberPicker.class.getName()))); 
numPicker.perform(setNumber(1)); 

Tạo ViewAction để đặt số:

public static ViewAction setNumber(final int num) { 
    return new ViewAction() { 
     @Override 
     public void perform(UiController uiController, View view) { 
      NumberPicker np = (NumberPicker) view; 
      np.setValue(num); 

     } 

     @Override 
     public String getDescription() { 
      return "Set the passed number into the NumberPicker"; 
     } 

     @Override 
     public Matcher<View> getConstraints() { 
      return ViewMatchers.isAssignableFrom(NumberPicker.class); 
     } 
    }; 
} 
Các vấn đề liên quan