java - 如何从列表中删除空项目?

标签 java list selenium selenium-webdriver

我想从网页获取所有链接,单击它们并检查它们是否正常工作,但我想从我的列表中删除 URL 包含 null 和注销的链接,因为 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]);  
     }

}

最佳答案

您可以首先避免使用没有 href 属性的链接

替换:

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

与:

List<WebElement> alllinks = driver.findElements(By.cssSelector("a[href]"));

要过滤掉“注销”链接:

a[href]:not([href$=LogOff])

关于java - 如何从列表中删除空项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32740686/

相关文章:

java - 从 selenium webdriver 中的消息中获取特定值

java - Spring Boot 自定义运行状况指示器未显示

java 8 jpeg 转换错误?

java - 在 java 中我们可以使用 list.remove(int index) 来删除该索引中的项目,如果列表很大而我们只能使用 long 来存储索引怎么办?

java - 如何将动态字符串值传递给方法?

selenium - 运行时出现UNABLE_TO_GET_ISSUER_CERT_LOCALLY错误——webdriver-manager通过npm启动

java - 使用 JSoup 解析 HTML 列表以创建树结构

java - 如何使用正则表达式收集日志的不同部分

winforms - 为什么我的列不会在 winforms .NET 数据网格中排序?

java - 通过 selenium 选择一个 javascript 下拉列表?