Java 如何在Android应用程序中使用循环按顺序选择项目

Java 如何在Android应用程序中使用循环按顺序选择项目,java,android,while-loop,automation,appium,Java,Android,While Loop,Automation,Appium,这里我有3张带有可点击元素的图片: 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@gma

这里我有3张带有可点击元素的图片:

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;



}


}

我使用了这段代码,因此当它运行第一个循环时,它会选择第一个图像:

driver.findElement(By.id(“com.offerup:id/circle”))。单击()

在代码运行完第二个循环后,我希望它返回并选择第二个图像,依此类推

我从uiautomatorviewer获得了我的元素,可以在这里看到:

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;



}


}

我不知道用什么命令来解决我的问题,有人能帮我吗

以下是我的完整代码,以便更好地进行检查:

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;



}


}

因为您正在尝试点击网格布局中的图像。以下是实现这一目标的步骤

  • 识别网格元素
  • 将该行添加到列表中
  • 然后遍历到每一行,单击图像元素
  • 下面是帮助实现它的代码函数

    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;
    
                    }
    
                }
            }
    
    public void选择照片(int numberofphotoselect){
    //找到网格元素
    WebElement gridAlbum=driver.findElement(By.xpath(“相册完整网格的xpath”);
    //将元素的行添加到列表中
    List gridRows=gridAlbum.findElements(driver.findElement(By.xpath(“行元素的xpath”);
    //查找行数
    System.out.println(“行数”+gridRows.size());
    对于(WebElement行:网格行){
    列表单元格=row.findElements(driver.findElement(By.xpath(“图像的xpath”);
    for(WebElement单元:单元){
    如果(numberOfPhotosToSelect>0){
    单元格。单击();
    要选择的数目--;
    }
    其他的
    打破
    }
    }
    }
    
    好的,谢谢,但是,我应该把它放在我的代码中的什么地方呢?不要创建函数,而是使用方法中可用的代码片段。用我上面提到的代码替换单击图像的代码。事情似乎不起作用,在我插入XPath之后,我在这行列表g中不断得到一个java.lang.ClassCastExceptionridRows=gridAlbum.findElements(driver.findElement(By.xpath(“row元素的xpath”);为row元素添加正确的xpath。row元素表示一行中包含一个或多个元素的元素。从XML中,我可以理解框架布局就是row元素。在findElements中,出现的是:方法findElements(By)在类型中,MobileElement不适用于参数(WebElement)