Selenium webdriver getelements-Appium不适用于多个元素

Selenium webdriver getelements-Appium不适用于多个元素,selenium-webdriver,appium,getelementsbyname,Selenium Webdriver,Appium,Getelementsbyname,我正在努力获取所有元素及其值。 我有一张桌子,里面有几样东西 表中的所有项都有相同的名称,但值不同,而我尝试使用 List<WebElement> l = driver.findElements(By.name(name)); 然后在列表中迭代并通过 for(int i =0; i < l.length; i++){ String val = ((MobileElement) l.get(i)).getAttribute("value"); } 我只在第一次迭代的第一个

我正在努力获取所有元素及其值。 我有一张桌子,里面有几样东西

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

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");
我得到了正确的值

似乎每次尝试访问元素时都需要拉动该元素。 是虫子,还是我错过了什么

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.findElementsBy.namename;U获取与名称匹配的所有元素。
但当您使用ifl.geti.instanceOfMobileElement时,您只对元素进行操作,这些元素是MobileElement的实例。如果没有它,则可能会将null或其他奇怪元素写入val,然后rest不起作用。

您是否检查instanceof是否可以将其转换为Mobile元素?正如我所描述的,只有在我为每个元素执行findElements并获得正确的元素值时,我才可能提取该元素。如果我只执行一次findElements,然后尝试迭代,则得到一个空值。show code for iteration.forint I=0;i