Selenium webdriver “线程中的异常”;“主要”;java.lang.IndexOutOfBoundsException:索引:10,大小:10

Selenium webdriver “线程中的异常”;“主要”;java.lang.IndexOutOfBoundsException:索引:10,大小:10,selenium-webdriver,Selenium Webdriver,这是我的密码 List<WebElement> tst = driver.findElements(By.xpath(".//*@id='container']/div/div[2]/div/div/div")); System.out.println(tst.size()); Thread.sleep(2000); for (int i = 1; i<=tst.size(); i=i+1)

这是我的密码

List<WebElement> tst = driver.findElements(By.xpath(".//*@id='container']/div/div[2]/div/div/div"));




         System.out.println(tst.size());


         Thread.sleep(2000);
         for (int i = 1; i<=tst.size(); i=i+1)
            {

                System.out.println(tst.get(i).getText());
                Thread.sleep(1000);

一方面,这是一个java代码,而不是javascript代码。另一方面,您正试图访问索引为10的元素,但该列表最后一个元素的索引是9,因为java列表中的索引从0(0到9)开始。必须从0循环到tst.size()-1:

List tst=driver.findElements(By.xpath(“./*@id='container']/div/div[2]/div/div/div”);
System.out.println(tst.size());
《睡眠》(2000年);

对于(inti=0;i我认为应该用0初始化i

for (int i = 0; i <= tst.size(); i++)

for(int i=0;i列表索引为0,这意味着它从0运行到lst.size()-1,将for循环从

for (int i = 1; i<=tst.size(); i=i+1) //In your case, runs from 1 to 10(included)
for(inti=1;i谢谢大家

for(int i=0;i<=tst.size()-1;i++)

for(int i=0;i请检查您的sysout for tst.size()。由于大小为10,我会将您的循环更改为for(int i=0;i

根据数组概念,索引从0开始,而不是从1开始。因此,上述修改应该满足您的需要。

这与javascript有什么关系?阅读一些数组索引的基础知识。java显然表示索引超出了范围。否则,请对每个循环使用..以避免这些问题。有许多方法可以迭代列表
for (int i = 1; i<=tst.size(); i=i+1) //In your case, runs from 1 to 10(included)
for (int i = 0; i<tst.size(); i=i+1) //For your case, this runs from 0 to 9(included)
for(int i=0;i<=tst.size()-1;i++)