我正在使用下面的代碼在電話簿[這是一個列表元素]中按名稱查找聯繫人。希望這段代碼能幫助你。此刻,我查看每個元素,並且如果請求的元素可用,我退出循環,除此之外,我將其轉移。我不知道它會有多大幫助,但它會給出一個基本的想法。我正在使用appium進行一些UI自動化。有人,有更好的知識,請指導或更正,如果有任何加快此活動的方式來獲取列表中的所有元素的列表,這也應該幫助我
public Boolean Get_PhContact_ByName(MobileDriver d, String strName){
Boolean bFoundName = false;
while(bFoundName == false)
{
List <WebElement> ContactList = d.findElements(By.id(ID_MENU_CONTACT_NAMES));
int lstSize = ContactList.size();
System.out.println(String.valueOf(lstSize));
for(int iIndex = 0; iIndex < lstSize; iIndex++)
{
WebElement xName = ContactList.get(iIndex);
String strNameOrNumber = xName.getText().replaceAll("(?:\\n|\\r)", "").trim();
System.out.println(strNameOrNumber);
if(strNameOrNumber.equals(strName))
{
System.out.println("Found Name" + strName);
xName.click();
bFoundName = true;
}
}
if(bFoundName == false)
PerformSwipeDown(d);
}
return true;
}
public void PerformSwipeDown(MobileDriver d)
{
String originalContext = d.getContext();
d.context("NATIVE_APP");
org.openqa.selenium.Dimension size = (org.openqa.selenium.Dimension) d.manage().window().getSize();
int starty = (int) (size.height * 0.8);
int endy = (int) (size.height * 0.20);
int startx = size.width/2;
((AndroidDriver)d).swipe(startx, starty, startx, endy, 1000);
d.context(originalContext);
}
public void PerformSwipeUp(MobileDriver d)
{
String originalContext = d.getContext();
d.context("NATIVE_APP");
org.openqa.selenium.Dimension size = (org.openqa.selenium.Dimension) d.manage().window().getSize();
int starty = (int) (size.height * 0.20);
int endy = (int) (size.height * 0.8);
int startx = size.width/2;
((AndroidDriver)d).swipe(startx, starty, startx, endy, 1000);
d.context(originalContext);
}