Arraylist上的java.util.NoSuchElementException
尝试从页面中查找断开的链接,为此,我从网页中获取所有可用的链接,然后通过循环逐个检查,但得到以下错误。没有得到任何理想的请帮助我解决这个错误 以下是我的代码:Arraylist上的java.util.NoSuchElementException,java,selenium,while-loop,iterator,Java,Selenium,While Loop,Iterator,尝试从页面中查找断开的链接,为此,我从网页中获取所有可用的链接,然后通过循环逐个检查,但得到以下错误。没有得到任何理想的请帮助我解决这个错误 以下是我的代码: List<WebElement> links = driver.findElements(By.tagName("a")); System.out.println("Total no. of links are: "+ links.size());
List<WebElement> links = driver.findElements(By.tagName("a"));
System.out.println("Total no. of links are: "+ links.size());
java.util.Iterator<WebElement> it = links.iterator();
while(it.hasNext()){
url = it.next().getAttribute("href");
urlname=it.next().getText();
if(url == null || url.isEmpty()){
System.out.println(urlname +" - "+url+ ": URL is either not configured for anchor tag or it is empty");
continue;
}
/* if(!url.startsWith(homePage)){
System.out.println("URL belongs to another domain, skipping it.");
continue;
} */
try {
huc = (HttpURLConnection)(new URL(url).openConnection());
huc.setRequestMethod("HEAD");
huc.connect();
respCode = huc.getResponseCode();
if(respCode >= 400){
System.out.println(urlname +" - "+ url +": is a broken link");
}
else{
// System.out.println(url+" is a valid link");
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
不要在循环的同一次迭代中推进
迭代器两次
使用变量存储从迭代器获得的下一个元素:
Iterator<WebElement> it = links.iterator();
while (it.hasNext()) {
WebElement element = it.next();
url = element.getAttribute("href");
urlname =e lement.getText();
...
}
Iterator it=links.Iterator();
while(it.hasNext()){
WebElement=it.next();
url=element.getAttribute(“href”);
urlname=e element.getText();
...
}
it.next()只需调用一次(将其保存到变量)。否则,它将前进到下一个元素。使用当前代码,您可以在每次迭代时前进2次。您可以在不需要自己管理迭代器的地方尝试以下代码
List<WebElement> links = driver.findElements(By.tagName("a"));
for(WebElement element:links){
url = element.getAttribute("href");
urlName = element.getText();
...
...
}
List links=driver.findElements(按.tagName(“a”));
for(WebElement:links){
url=element.getAttribute(“href”);
urlName=element.getText();
...
...
}
List<WebElement> links = driver.findElements(By.tagName("a"));
for(WebElement element:links){
url = element.getAttribute("href");
urlName = element.getText();
...
...
}