Java 如何从列表中删除空项?

Java 如何从列表中删除空项?,java,list,selenium,selenium-webdriver,Java,List,Selenium,Selenium Webdriver,我想从网页中获取所有链接,单击它们并检查它们是否正常工作,但我想从我的列表中删除包含null的URL的链接并注销,因为nullpointerexception和驱动程序从网页注销。你怎么能建议我那样做?请记住,我是java新手 这是我目前掌握的代码: private static String[] links = null; private static int linksCount = 0; public static void main(String[] args) { WebD

我想从网页中获取所有链接,单击它们并检查它们是否正常工作,但我想从我的列表中删除包含null的URL的链接并注销,因为nullpointerexception和驱动程序从网页注销。你怎么能建议我那样做?请记住,我是java新手

这是我目前掌握的代码:

private static String[] links = null;
private static int linksCount = 0;
public static void main(String[] args) {

     WebDriver driver = new FirefoxDriver();
     driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

     driver.get("webpage that I'm trying to test");
     driver.manage().window().maximize();
     driver.findElement(By.id("UserNameOrEmail")).sendKeys("username");
     driver.findElement(By.id("Password")).sendKeys("password");
     driver.findElement(By.xpath(".//*[@id='main']/form/div[3]/input")).click();
     driver.findElement(By.xpath(".//*[@id='content-main']/div/div/a[3]/h3")).click();


     List<WebElement> alllinks = driver.findElements(By.tagName("a")); 
     linksCount = alllinks.size();
     System.out.println("Number of links: "+linksCount);
     links= new String[linksCount];  
     //remove items from list (null, logoff... )

     // print all the links  
     System.out.println("List of links Available: ");  
     for(int i=0;i<linksCount;i++)
     {
     links[i] = alllinks.get(i).getAttribute("href");
     System.out.println(alllinks.get(i).getAttribute("href"));
     } 
     // click on each link
     for(int i=0;i<linksCount;i++)
     {
     driver.navigate().to(links[i]);
     System.out.println("Link  "+links[i]);  
     }

}
私有静态字符串[]链接=null;
私有静态int-linkscont=0;
公共静态void main(字符串[]args){
WebDriver=newfirefoxdriver();
driver.manage().timeouts().implicitlyWait(5,TimeUnit.SECONDS);
get(“我正在尝试测试的网页”);
driver.manage().window().maximize();
driver.findElement(By.id(“用户名或邮件”)).sendKeys(“用户名”);
driver.findElement(By.id(“密码”)).sendKeys(“密码”);
findelelement(By.xpath(“.//*[@id='main']/form/div[3]/input”)。单击();
findelelement(By.xpath(“./*[@id='content-main']/div/div/a[3]/h3”)。单击();
列出所有链接=driver.findElements(按.tagName(“a”));
LinkScont=alllinks.size();
System.out.println(“链接数:+LinkScont”);
links=新字符串[LinkScont];
//从列表中删除项目(空,注销…)
//打印所有链接
System.out.println(“可用链接列表:”);
对于(int i=0;i您可以首先避免没有
href
属性的链接

替换:

List<WebElement> alllinks = driver.findElements(By.tagName("a"));

someList.stream().removeIf(e->e==null)
谢谢,这是一个非常好的主意,但是如何处理从页面注销的链接?我是否需要将其从列表中删除,这样它就不会被单击,或者有更好的解决方案?@ygimantasDirma我们不妨使用CSS选择器将其过滤掉。您能提供注销链接的HTML表示吗?
List<WebElement> alllinks = driver.findElements(By.cssSelector("a[href]"));
a[href]:not([href$=LogOff])