我正在尝试查找所有这些元素并在找到它们后单击它们但在线程“main”java.lang.IndexOutOfBoundsException中遇到Exception错误:索引:0,大小:0我不知道是什么我的错误是。
try {
while(clickMore == true) {
List<WebElement> commentsbutton = comment.findElements(By.className("UFIPagerLink"));
List<WebElement> repliesbutton = comment.findElements(By.className("UFIReplySocialSentenceLinkText"));
List<WebElement> seemorebutton = comment.findElements(By.className("_1n4g"));
if(commentsbutton.size() > 0 || repliesbutton.size() > 0 || seemorebutton.size() > 0 ) {
commentsbutton.get(0).click();
repliesbutton.get(0).click();
seemorebutton.get(0).click();
Thread.sleep(4000);
}
else clickMore = false;
}
} catch (NoSuchElementException e) {
System.out.println("Elements in this post not found");
}
答案 0 :(得分:3)
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
这清楚地说明你的commentsbutton
是空的而且没有元素。但是你试图获得索引0
的元素,而不是那里。
您必须考虑更改if条件,以避免异常。
答案 1 :(得分:3)
你的病情有误。如果commentsbutton.get(0)
,您只能安全地访问commentsbutton.size() > 0
。
将其更改为:
if(commentsbutton.size() > 0 && repliesbutton.size() > 0 && seemorebutton.size() > 0 ) {
commentsbutton.get(0).click();
Thread.sleep(4000);
}
或
if(commentsbutton.size() > 0) {
commentsbutton.get(0).click();
Thread.sleep(4000);
}
取决于所需的逻辑。
答案 2 :(得分:1)
||
表示“或”,因此此代码:
if(commentsbutton.size() > 0 || repliesbutton.size() > 0 || seemorebutton.size() > 0 ) {
commentsbutton.get(0).click();
Thread.sleep(4000);
}
...说“如果commentsbutton
的尺寸> 0 或 repliesbutton
的尺寸&gt; 0 或 seemorebutton
的尺寸> 0,从commentsbutton
获取第一项。“那么,如果commentsbutton
为空但repliesbutton
中有内容,该怎么办?你会得到你得到的错误。
您的意思可能是&&
(“和”)而不是||
(“或”),或者您可能只是想检查commentsbutton
而不是其他人。
答案 3 :(得分:0)
在您尝试访问or
first
元素之前,您正在执行list
条件
if(commentsbutton.size() > 0 || repliesbutton.size() > 0 || seemorebutton.size() > 0 )
在这种情况下,由于它是or
条件,因此只有一个条件必须为true
才能执行该块。
在尝试访问该元素之前,将其更改为and
条件,或仅为size
检查commentsButton
。