您好,尝试使用Java自动执行跟随按钮的点击,但是在for循环中使用javascriptexecutor遇到了麻烦。这是我的代码:
List<WebElement>clickOnFollowButton = driver.findElements(By.xpath("//button[contains(text(),'Follow')]"));
for (int i = 0; i < clickOnFollowButton.size() ; i++) {
driver.findElements(By.xpath("//button[contains(text(),'Follow')]")).get(i).click();
((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView();", clickOnFollowButton);
}
非常感谢您的帮助。
答案 0 :(得分:0)
我认为此论点"arguments[0].scrollIntoView();"
应该先于.click
。
您必须先使列表中的每个成员成为WebElement
变量,然后才能由JavascriptExecutor
执行,然后单击它:
for (int i = 0; i < clickOnFollowButton.size() ; i++) {
WebElement element = driver.findElements(By.xpath("//button[contains(text(),'Follow')]")).get(i);
((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView();", element);
element.click();
}
顺便说一句,还有一种方法可以为每个循环列表使用循环列表,如下所示:
List<WebElement> clickOnFollowButton = driver.findElements(By.xpath("//button[contains(text(),'Follow')]"));
for(WebElement element: clickOnFollowButton) {
((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView();", element);
element.click();
}