如何使用selenium + Appium随机点击列表中的元素(Android)?

时间:2016-08-19 10:30:00

标签: java android appium

下面的代码会抛出一个非法超出绑定异常的数组

java.util.List <MobileElement> ele = driver.findElements(By.xpath("//*[@id='com.bankappointmentschedulingmobile:id/bankType'][@index=0]"));
System.out.println(ele.size());
Random rnd = new Random();
int rndInt = rnd.nextInt(ele.size());
((org.openqa.selenium.WebElement) ele.get(rndInt)).click();

UI自动机中的元素:

enter image description here

2 个答案:

答案 0 :(得分:1)

您不必在上述情况下使用XPath,因为您有元素ID。此外,您正在为index = 0添加一个检查,这意味着它将仅检查索引为0的元素。在下面的示例中,我使用ID =&#34; bankType&#34;并打印其大小。在生成随机数时,我已减去&#34; 1&#34;因为索引将从0开始。

List<WebElement> elementList = driver.findElements(By.id("bankType"));
System.out.println("Total elements : " + elementList.size());

Random rand = new Random();
int index = rand.nextInt(elementList.size()-1); // -1 because index will start from 0

elementList.get(index).click();

答案 1 :(得分:0)

使用这种方法和appium一起使用ruby,但如果你有更少的元素,那么这个方法应该是好的,因为我的两个元素都有不同的xpath。

 And(/^I select the choice in cooking style$/) do
  style = 
['//UIAApplication[1]/UIAWindow[1]/UIACollectionView[1]/UIACollectionCell[1]/UIACollectionView[1]/UIACollectionCell[1]/UIAStaticText[1]]' , '//UIAApplication[1]/UIAWindow[1]/UIACollectionView[1]/UIACollectionCell[1]/UIACollectionView[1]/UIACollectionCell[2]/UIAStaticText[1]']
  cookingstyle = style.sample
  find_element(xpath: cookingstyle).click
  puts cookingstyle

end