Как использовать цикл для последовательного выбора элементов в приложении Android - PullRequest
2 голосов
/ 22 марта 2019

Здесь у меня есть 3 изображения с кликабельными элементами:

enter image description here

Я использовал этот код так, чтобы он проходил через первыйцикл, он выбирает FIRST изображение:

driver.findElement(By.id("com.offerup:id/circle")).click();

После того, как мой код проходит через второй цикл, я хочу, чтобы он вернулся и выбрал ВТОРОЕ изображение и т. Д.

Я получил свои элементы от uiautomatorviewer, которые можно увидеть здесь:

enter image description here

Я не уверен, какую команду использовать для решения моей проблемы, кто-нибудь может мне помочь?

Вот мой полный код для лучшего изучения:

public void SimpleTest() throws InterruptedException {


driver.findElement(By.id("com.offerup:id/email_button")).click(); 

By path = By.xpath("//*[@text='Enter your email address']"); 

driver.findElement(path).sendKeys("xxxxx@gmail.com");
Thread.sleep(2000);

driver.findElement(By.id("com.offerup:id/next_button")).click(); 

By path1 = By.xpath("//*[@text='']"); 

driver.findElement(path1).sendKeys("xxxxx");

driver.findElement(By.id("com.offerup:id/main_text")).click(); 
Thread.sleep(10000);

By path2 = By.xpath("//*[@text='OfferUp']"); 

driver.findElement(path2).click(); 
Thread.sleep(10000);

driver.findElement(By.id("com.offerup:id/nav_post_item")).click(); 
Thread.sleep(5000);

driver.findElement(By.id("com.offerup:id/addPhotoFromGallery")).click();

try {

driver.findElement(By.id("com.simplemobiletools.gallery:id/dir_thumbnail")).click();

driver.findElement(By.id("com.simplemobiletools.gallery:id/medium_thumbnail")).click();
}

catch (Exception e) {

    driver.findElement(By.id("com.offerup:id/circle")).click();

    driver.findElement(By.id("com.offerup:id/done")).click();
}

By path3 = By.xpath("//*[@text='Name, brand, model, etc.']");

driver.findElement(path3).sendKeys("Iphone icloud unlocked"); 

driver.findElement(By.id("com.offerup:id/footer_button")).click();

driver.findElement(By.id("com.offerup:id/see_more")).click();

driver.findElement(By.id("com.offerup:id/category_list_row_text"));

By path4 = By.xpath("//*[@text='Cell Phones']");

driver.findElement(path4).click();

By path5 = By.xpath("//*[@text='Description']");

driver.findElement(path5).sendKeys("");
Thread.sleep(2000);

driver.findElement(By.id("com.offerup:id/conditionSeekBar")).sendKeys(new CharSequence[] { " " }); 

driver.findElement(By.id("com.offerup:id/footer_button")).click();

By path6 = By.xpath("//*[@text='$0']"); 

driver.findElement(path6).sendKeys("200"); 
Thread.sleep(2000);

driver.findElement(By.id("com.offerup:id/firmPrice")).click();

driver.findElement(By.id("com.offerup:id/footer_button")).click();

driver.findElement(By.id("com.offerup:id/edit")).click();

By path7 = By.xpath("//*[@text='Zip code']");

driver.findElement(path7).sendKeys("xxxx"); 
Thread.sleep(2000); 

driver.findElement(By.id("com.offerup:id/saveLocation")).click();  

if(driver.findElement(By.id("com.offerup:id/shipping_checkbox")).isSelected()){
       driver.findElement(By.id("com.offerup:id/shipping_checkbox")).click();
    }

driver.findElement(By.id("com.offerup:id/footer_button")).click();
Thread.sleep(2000);

driver.findElement(By.id("com.offerup:id/footer_button")).click();
Thread.sleep(4000);

driver.findElement(By.id("com.offerup:id/footer_button")).click();

driver.closeApp();
Thread.sleep(50000); 

int index = 100;
do {
    index --;

By path8 = By.xpath("//*[@text='OfferUp']"); 

driver.findElement(path8).click(); 
Thread.sleep(5000);

driver.findElement(By.id("com.offerup:id/nav_post_item")).click(); 
Thread.sleep(5000);

driver.findElement(By.id("com.offerup:id/addPhotoFromGallery")).click();

try {

driver.findElement(By.id("com.simplemobiletools.gallery:id/dir_thumbnail")).click();

driver.findElement(By.id("com.simplemobiletools.gallery:id/medium_thumbnail")).click();
}

catch (Exception e) {

    driver.findElement(By.id("com.offerup:id/circle")).click();

    driver.findElement(By.id("com.offerup:id/done")).click();
}

By path9 = By.xpath("//*[@text='Name, brand, model, etc.']");

driver.findElement(path9).sendKeys("Iphone XR Icloud unlocked"); // set ad name here

driver.findElement(By.id("com.offerup:id/footer_button")).click();

driver.findElement(By.id("com.offerup:id/see_more")).click();

driver.findElement(By.id("com.offerup:id/category_list_row_text"));

By path10 = By.xpath("//*[@text='Cell Phones']");

driver.findElement(path10).click();

By path11 = By.xpath("//*[@text='Description']");

driver.findElement(path11).sendKeys("");
Thread.sleep(2000);

driver.findElement(By.id("com.offerup:id/conditionSeekBar")).sendKeys(new CharSequence[] { " " });

driver.findElement(By.id("com.offerup:id/footer_button")).click();

By path12 = By.xpath("//*[@text='$0']");

driver.findElement(path12).sendKeys("200");
Thread.sleep(2000);

driver.findElement(By.id("com.offerup:id/firmPrice")).click();

driver.findElement(By.id("com.offerup:id/footer_button")).click();

driver.findElement(By.id("com.offerup:id/footer_button")).click();
Thread.sleep(2000);

driver.findElement(By.id("com.offerup:id/footer_button")).click();
Thread.sleep(4000);

driver.findElement(By.id("com.offerup:id/footer_button")).click();

driver.closeApp();
Thread.sleep(50000); 

} while (index > 0);
    index = index + 1;



}


}

1 Ответ

0 голосов
/ 22 марта 2019

Поскольку вы пытаетесь нажать на изображения в макете сетки. Вот шаги для достижения этого.

  1. Определить элемент сетки.
  2. Добавить строку в список.
  3. Затем перейдите к каждой строке, чтобы щелкнуть элемент изображения.

Ниже приведена функция кода, которая помогает достичь этого.

public void selectPhotos(int numberOfPhotosToSelect){

            //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 Image");

                for(WebElement cell:cells) {

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

                }

            }
        }
...