下面的代码会抛出一个非法超出绑定异常的数组
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自动机中的元素:
答案 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