2015-09-23 2 views
1

Я хочу получить все ссылки с веб-страницы, щелкнуть их и проверить, работают ли они, но я хочу удалить его с 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]); 
    } 

} 
+3

'someList.stream() removeIf (е ->. e == null); ' – Paul

ответ

1

Вы можете избежать ссылки без href атрибута в первую очередь.

Заменить:

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

с:

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

Чтобы отфильтровать "выйти из системы" ссылка:

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

спасибо, это действительно хорошая идея, но как мне разобраться с ссылкой, которая выходит из страницы? Нужно ли мне удалить это из моего списка, чтобы он не был нажат или не было лучшего решения? – safary

+1

@ ŽygimantasDirma мы могли бы также отфильтровать его с помощью селектора CSS. Можете ли вы предоставить представление HTML для выхода из системы? – alecxe

+0

http: // localhost: 56471/Пользователь/LogOff – safary

Смежные вопросы