2015-01-02 3 views
2

Я тестирование андроидного приложения, который имеет функцию, чтобы установить фото из галереи телефона в качестве аватара. Мои устройства работают на API LEVEL 4.2.2, я использую Appium 1.2.4.1. и кодирование с использованием Java. Мне было интересно, как я могу получить конкретную фотографию. На первом экране отображаются все корневые папки , где находятся фотографии (например, 100ANDRO), и после щелчка на этом я могу получить доступ к фотографиям. Окно инспектора не отображает элемент, который можно выбрать для перехода к фотографиям. Вот то, что я вижу от инспектора:appium как выбрать фотографию из галереи

image description here

Любые идеи, как я могу на самом деле получить доступ к фото и выберите его? Благодаря!!!

+0

с инспектор, вы можете собрать xpath для использования, но это хрупкое, поскольку это заставляет ваш тест зависеть от конкретной версии приложения. – njzk2

+0

(хотя, по внешнему виду, фактический контент не находится в дереве.) – njzk2

ответ

-2
Intent intent = new Intent(); 
    intent.setType("image/*"); 
    intent.setAction(Intent.ACTION_PICK); 
    startActivityForResult(Intent.createChooser(intent, "Select Picture"),SELECT_PHOTO); 
+2

Короткое объяснение того, что вы здесь делаете, было бы полезно. :-) – blalasaadri

+0

Как я уже сказал, я пытаюсь запустить тест, используя appium (так называемые классы селена) в Eclipse. Так что я думаю, что я не могу использовать классы Android, такие как Intent и т. Д. – Panos

+0

, который не отвечает на вопрос – njzk2

-2

Вы можете использовать Intent для доступа к Галерея изображений -

Intent intent = new Intent(); 
         intent.setType("image/*"); 
         intent.setAction(Intent.ACTION_GET_CONTENT); 
         startActivityForResult(Intent.createChooser(intent, 
           "Select Picture"), SELECT_PICTURE); 

и обработки обратного вызова по -

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (resultCode == RESULT_OK) { 
      if (requestCode == SELECT_PICTURE) { 
       Uri selectedImageUri = data.getData(); 
       selectedImagePath = getPath(selectedImageUri); 
      } 
     } 
    } 

    /** 
    * helper to retrieve the path of an image URI 
    */ 
    public String getPath(Uri uri) { 
      // just some safety built in 
      if(uri == null) { 
       // TODO perform some logging or show user feedback 
       return null; 
      } 
      // try to retrieve the image from the media store first 
      // this will only work for images selected from gallery 
      String[] projection = { MediaStore.Images.Media.DATA }; 
      Cursor cursor = managedQuery(uri, projection, null, null, null); 
      if(cursor != null){ 
       int column_index = cursor 
       .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
       cursor.moveToFirst(); 
       return cursor.getString(column_index); 
      } 
      // this is our fallback here 
      return uri.getPath(); 
    } 

Я думаю, что это поможет :)

+1

Я пытаюсь запустить тест, используя appium (так называемые классы selenium) в Eclipse. Поэтому я думаю, что я не могу использовать классы Android, такие как Intent и т. Д. – Panos

+0

, который не отвечает на вопрос – njzk2

Смежные вопросы