0

我正在尝试获取所有元素及其值。我有一张桌子,里面有几件物品(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");

我得到了正确的值。

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

4

1 回答 1

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 
} }

它之所以有效,是因为当 U 使用driver.findElements(By.name(name));U 获取与名称 name 匹配的所有元素时。但是当 U 使用if(l.get(i)).instanceOf(MobileElement))U 仅对元素进行操作时,这些元素是 MobileElement 的实例。没有它,可能会将 null 或其他奇怪的元素写入 val,然后休息无效。

于 2015-02-23T11:37:56.407 回答