2015-06-30 55 views
4

我想使用espresso框架自动化android原生应用程序,我找不到如何获取元素列表的方法。 (例如,我需要检查所有checkboxed页面上) 硒我可以这样做:如何获得特浓咖啡中的元素列表?

elements = self.driver.find_elements_by_xpath("//xpath") 
for element in elements: 
    //do stuff 

回答

0

正如我在咖啡understend可以在一个时间一个元素执行只有一个动作。我想我不能通过id或类名称或其他方式获取元素列表。所以如果我们有容器作为RecyclerView,我们可以在循环中对它的子元素执行操作。就像这样:

for (int i = 0; i <= num; i++) { 
      onView(withId(R.id.result)).perform(RecyclerViewActions.actionOnItemAtPosition(i, click())); 
     } 

,我们可以让孩子的数量:

public int getRecyclerViewChildCount(int matcher) { 
     final int[] count = {0}; 
     onView(withId(matcher)).perform(new ViewAction() { 
      @Override 
      public Matcher<View> getConstraints() { 
       return isAssignableFrom(RecyclerView.class); 
      } 
      @Override 
      public String getDescription() { 
       return "getting child count"; 
      } 
      @Override 
      public void perform(UiController uiController, View view) { 
       RecyclerView rv = (RecyclerView) view; 
       count[0] = rv.getChildCount(); 
      } 
     }); 
     return count[0]; 
    } 

但这里将成为问题,如果,例如,我们在处理搜索结果和结果在部分加载。所以我们可以在第一部分执行点击。

但更简单的方法我猜只是指定要进行点击,赶上PerformException如果指定的数字是子元素的数目大:

try { 
    int count = 50;// specify number of child elements in RecycleView you want to click 
    for (int i = 0; i <= count; i++) {  
    onView(withId(R.id.result)).perform(RecyclerViewActions.actionOnItemAtPosition(i, click())); 
      } 
      }catch(PerformException e){}//if argument is greater then files in search result.