getelements - Appium,不适用于多个元素

时间:2015-02-22 15:43:04

标签: selenium-webdriver appium getelementsbyname

我正在努力获得所有elemet和他们的价值观。 我有一张桌子上有几个项目(IOS)

表中的所有项目都具有相同的名称但值不同,而我正在尝试使用

一次尝试获取元素
List<WebElement> l = driver.findElements(By.name(name)); 

然后通过列表迭代并通过

拉取值
for(int i =0; i < l.length; i++){
 String val = ((MobileElement) l.get(i)).getAttribute("value");
}

我只在第一次迭代时获得正确的值(第一个元素),其他所有值都返回空值......

如果我将代码更改为:

        //1
        List<WebElement> l = driver.findElements(driver, By.name(name));
        String val = ((MobileElement) weList.get(0)).getAttribute("value");

        //2
        l = driver.findElements(driver, By.name(name));
        val = ((MobileElement) weList.get(1)).getAttribute("value");

        //3
        l = driver.findElements(driver, By.name(name));
        val = ((MobileElement) weList.get(2)).getAttribute("value");

我得到了正确的值。

似乎每次我尝试访问它时都需要拉取元素。 这是一个错误,还是我错过了什么?

1 个答案:

答案 0 :(得分:0)

for(int i =0; i < l.length; i++){    
 if(l.get(i)).instanceOf(MobileElement)){
    String val = ((MobileElement) l.get(i)).getAttribute("value"); 
    println val;//syso in Java 
} }

当你使用driver.findElements(By.name(name)); U获得与名称相匹配的所有元素时,它就起作用了。 但是当U使用if(l.get(i)).instanceOf(MobileElement)) U时只对元素进行操作,那就是MobileElement的实例。如果没有它,就有可能将null或其他奇怪元素写入val,然后休息不起作用。