Java 如何在Android应用程序中使用循环按顺序选择项目
这里我有3张带有可点击元素的图片: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
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)