简体   繁体   English

Selenium webdriver 将 webelement 存储在 webelement 列表中

[英]Selenium webdriver store webelement in webelement list

How to store webelement in webelement list?如何将 webelement 存储在 webelement 列表中? I have created list for webelement and passing webelement obj in add method, but system display null exception.我已经为 webelement 创建了列表并在 add 方法中传递了 webelement obj,但系统显示 null 异常。 Java Code: List<WebElement> element=null; Java 代码: List<WebElement> element=null; and in for loop i am passing webelement obj in add method like: WebElement we = driver...("test"); element.add(0,we);在 for 循环中,我在 add 方法中传递 webelement obj,例如: WebElement we = driver...("test"); element.add(0,we); WebElement we = driver...("test"); element.add(0,we);

Why I am getting null pointer exception ( java.lang.NullPointerException )?为什么我得到空指针异常( java.lang.NullPointerException )?

I would appreciate your inputs.我将不胜感激您的投入。

 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();
        }
    }

Thanks,谢谢,

You setted element to null and then tried to add something to it.您将 element 设置为 null,然后尝试向其中添加一些内容。 You cannot add anything to it as it IS null!你不能添加任何东西,因为它是空的!

Instead, try this:相反,试试这个:

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

As you can see, I initialized the object before using it, so it no longer should be null.如您所见,我在使用对象之前对其进行了初始化,因此它不应再为 null。

Please replace your following line :请替换您的以下行:

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

With following :与以下:

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

Also you can get list size using : System.out.println(we.size());您也可以使用以下方法获取列表大小: System.out.println(we.size()); Let me know if any query.如果有任何疑问,请告诉我。

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

Worked for me.为我工作。

The selector is of course up to you.选择器当然取决于你。 The first part is the important bit第一部分是重要的一点

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM