Je travaille sur le script WebDriver de sélénium sur une page Web: http://data.worldbank.org/income-level/HICIndexOutOfBounds exception se produit au hasard sur l'exécution de script WebDriver
Tenir compte de cette mise en œuvre:
public void retrieveCountryData() throws Exception{
Thread.sleep(2000);
WebDriverWait wait = new WebDriverWait(driver, 60);
List<WebElement> countryNames = driver.findElements(By.cssSelector("a[href*='/country/']"));
for(int i =76;i<countryNames.size();i++){
List<WebElement> countryLinks = driver.findElements(By.cssSelector("a[href*='/country/']"));
wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("a[href*='/country/']")));
Thread.sleep(3000);
WebElement elem =countryLinks.get(i);
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("window.scrollTo(" + elem.getLocation().x + "," +(elem.getLocation().y- 100) + ");");
String countryText = elem.getText();
System.out.println("The Country is: "+ countryText);
elem.click();
wait.until(ExpectedConditions.visibilityOfElementLocated(countryDetailVerify));
Thread.sleep(2000);
driver.navigate().back();
}
Ce script fonctionne correctement parfois, et à d'autres moments, il donne IndexOutOfBounds Excption. J'ai exécuté ce script 10 fois, et 6 fois il a donné cette exception, et 4 fois il exécute tout son processus.
est la pile Après trace de l'exception:
java.lang.IndexOutOfBoundsException: Index: 77, Size: 0
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at pageObjects.WorldBankData.retrieveCountryData(WorldBankData.java:172)
at testCases.SampleTest.getCTex(SampleTest.java:35)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:639)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:816)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1124)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108)
at org.testng.TestRunner.privateRun(TestRunner.java:774)
at org.testng.TestRunner.run(TestRunner.java:624)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:359)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:354)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:312)
at org.testng.SuiteRunner.run(SuiteRunner.java:261)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1215)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1140)
at org.testng.TestNG.run(TestNG.java:1048)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:112)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:205)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:176)
at pageObjects.WorldBankData.retrieveCountryData(WorldBankData.java:172)
fait référence à WebElement elem =countryLinks.get(i);
dans mon script. Est-ce que quelqu'un peut me dire pourquoi je suis confronté à ce problème?
Il semble que 'driver.findElements (By.cssSelector (" a [href * = '/ country /'] "));' renvoie parfois 0 éléments. – Zircon
Peut-être parce que la taille de countryNames n'est pas plus grande que 76 parfois? –
Y a-t-il quelque chose sur index = 77? Just is html code –