Ich verstehe, dass diese Frage paar Male gefragt wurde, aber ich habe versucht, die meisten Lösungen und schließlich posten ... wenn verpasst, bitte direkt mir danke.Selen - Fehler kann nicht festgestellt werden java.lang.IndexOutOfBoundsException: Index: 92, Größe: 92
Ich versuche, eine Seite zu gehen und alle Links in einem Tag ('a') und klicken Sie auf jede greifen angezeigt Link aus irgendeinem Grund bin ich immer
java.lang.IndexOutOfBoundsException: Index: 92 , Größe: 92
public static void clickOnEachLinkOnAPage(String tagName, String homePageTitle) {
int numberOfElementsFound = getNumberOfElementsFound(By.tagName(tagName));
System.out.println(numberOfElementsFound);
for (int pos = 0; pos < numberOfElementsFound; pos++) {
if (getElementWithIndex(By.tagName(tagName), pos).isDisplayed()) {
String linkText = getElementWithIndex(By.tagName(tagName), pos).getText().trim();
String url = getElementWithIndex(By.tagName(tagName), pos).getAttribute("href");
if (linkText.length()!=0) {
getElementWithIndex(By.tagName(tagName), pos).click();
String newWindow = driver.getWindowHandle();
Generic.handleMultipleWindows(newWindow);
String pageTitle = driver.getTitle();
linkText = StringUtils.abbreviate(linkText, 10);
System.out.println(pos +","+linkText+","+url+","+pageTitle);
// System.out.println(linkText+","+url+","+pageTitle);
closeAllOtherWindows(newWindow);
System.out.println("number of elements"+numberOfElementsFound);
if(!pageTitle.equals(homePageTitle)) {
driver.navigate().back();
}
}
}
}
}
public static int getNumberOfElementsFound(By by) {
return driver.findElements(by).size();
}
public static WebElement getElementWithIndex(By by, int pos) {
return driver.findElements(by).get(pos);
}
public static boolean closeAllOtherWindows(String openWindowHandle) {
Set<String> allWindowHandles = driver.getWindowHandles();
for (String currentWindowHandle : allWindowHandles) {
if (!currentWindowHandle.equals(openWindowHandle)) {
driver.switchTo().window(currentWindowHandle);
driver.close();
}
}
driver.switchTo().window(openWindowHandle);
if (driver.getWindowHandles().size() == 1)
return true;
else
return false;
}
public static void handleMultipleWindows(String windowTitle) {
Set<String> windows = driver.getWindowHandles();
for (String window : windows) {
driver.switchTo().window(window);
if (driver.getTitle().contains(windowTitle)) {
return;
}
}
}
Fehler I
java.lang.IndexOutOfBoundsException bin immer: Index: 92, Größe: 92
Sie den Index 92 mit einer Anordnung des 92. Indexgröße Zugriff auf 92 existiert nicht, weil Arrays Null – Li357
basieren, die Linie diesen Fehler verursacht? Ich vermute die Ursache ist, dass einige Links nach dem Laden der Seite entfernt werden. – Buaban
Wenn ich im Debug-Modus laufen - mein Test schlägt bei if (getElementWithIndex (By.tagName (tagName), pos) .isDisplayed()) { – user790049