Невозможно выбрать изображение из галереи Android из другого собственного приложения - PullRequest
0 голосов
/ 12 февраля 2019

Необходимо выбрать изображение из галереи через другое собственное приложение, но не удается выбрать изображение.

Нажмите Добавить изображение (в собственном приложении) -> Из библиотеки -> Все изображения -> Выберите фактическое изображение

Рабочая часть кода: Нажмите Добавить изображение (в собственном приложении) -> Из библиотеки -> Все изображения

//Click Add Photo icon in the app to select an image from gallery

wait.until(ExpectedConditions.elementToBeClickable(iconAddPhoto));
        iconAddPhoto.click();   

//Select from Library option when Take Photo/Choose from Library Option is shown
        wait.until(ExpectedConditions.visibilityOf(lnkChooseFromLibrary));
        lnkChooseFromLibrary.click();

//Select All Pictures folder when All Pictures and Whatsapp Image folders are displayed
        List<MobileElement> galleryElements = 
driver.findElements(By.className("android.widget.ImageView"));
        galleryElements.get(0).click();

Не рабочая часть кода: Выбор фактического изображения из папки всех изображений

//Tried the below combinations one at a time to select the actual image but the element is not getting detected

driver.findElement(By.xpath("//android.widget.ImageView[contains(@resource-id,'com.ebay.kijiji.ca:id/grid_item_image')]")).click();

driver.findElement(By.xpath("//android.widget.ImageView[contains(@resource-id,'com.ebay.kijiji.ca:id/grid_item_image')]")).get(0).click();

AndroidElement abc = (AndroidElement) driver.findElement(By.xpath ("//android.widget.ImageButton[@bounds='[4,210][238,410]']"));
        abc.click();

List<MobileElement> galleryElements1 = driver.findElements(By.id("com.ebay.kijiji.ca:id/image_library_grid"));
        galleryElements1.get(0).click();

ArrayList<MobileElement> listImage=(ArrayList<MobileElement>) driver.findElements(By.id("com.ebay.kijiji.ca:id/image_library_grid"));
        System.out.println(listImage.size());
        listImage.get(5).click();

1 Ответ

0 голосов
/ 13 февраля 2019

Я надеюсь, что вы пытаетесь нажать на фотографию, которая отображается в сетке.

Изначально постарайтесь, чтобы в сетке альбома было меньше фотографий, поскольку appium выбирает элемент из нижней части сетки.

    public void selectPhotos(int numberOfPhotos){

            //Find the grid element
            WebElement gridAlbum= driver.findElement(By.xpath("xpath of the full grid of album"));

            //Add the rows of element to the list
            List<WebElement> gridRows=gridAlbum.findElements(driver.findElement(By.xpath("xpath of the row element");

           //find the number of rows
            System.out.println("Number of Rows"+gridRows.size());

            for(WebElement row:gridRows) {

                List<WebElement> cells=row.findElements(driver.findElement(By.xpath("xpath of the element");

                for(WebElement cell:cells) {

                    if(count>0) {
                    cell.click();
                    count--;
                    }
                    else
                      break;

                }

            }
        }
...