在webelement列表中的Selenium webdriver商店webelement

时间:2014-12-16 11:41:13

标签: java selenium-webdriver

如何在webelement列表中存储webelement?我已经为webelement创建了列表并在add方法中传递了webelement obj,但系统显示为null异常。 Java代码:List<WebElement> element=null;并且在for循环中我在添加方法中传递webelement obj,如:WebElement we = driver...("test"); element.add(0,we);

为什么我得到空指针异常(java.lang.NullPointerException)?

我很感激您的意见。

 public void test(){
 List<WebElement> element = null;

    int rows=1;
    for(int i=1; i<=rows;i++){
        text=driver.findElement(By.xpath("//*[@id='testid']/table/tbody/tr["+i+"]/td/p")).getText();
        if(!text.equals("")){
            for(int j=1;j<=rows;j++){
                if(isElementPresent(driver, By.xpath("//*[@id='testid']/table/tbody/tr["+(j+1)+"]/td[6]/a"))){
                    WebElement we =driver.findElement(By.xpath("//*[@id='testid']/table/tbody/tr["+(j+1)+"]/td[6]/a"));
                    element.add(we);
                    rows++;
                }
            }
        }else{
            break;
        }
    }
    for(WebElement we:element){
        we.click();
        }
    }

谢谢,

3 个答案:

答案 0 :(得分:1)

您将元素设置为null,然后尝试向其添加内容。你不能添加任何东西,因为它是空的!

相反,试试这个:

List<WebElement> element=new ArrayList<WebElement>();
...

如您所见,我在使用之前初始化了对象,因此它不再是null。

答案 1 :(得分:0)

请替换以下行:

 WebElement we = driver.findElement(By.xpath("//*[@id='testid']/table/tbody/tr["+(j+1)+"]/td[6]/a"));

以下:

 java.util.List<WebElement> element= driver.findElement(By.xpath("//*[@id='testid']/table/tbody/tr["+(j+1)+"]/td[6]/a"));

您还可以使用以下命令获取列表大小:System.out.println(we.size()); 如果有任何疑问,请告诉我。

答案 2 :(得分:0)

列出专辑 = driver.findElements(By.cssSelector("._3rte"))

为我工作。

选择器当然由您决定。第一部分是重要的部分