线程"main" java.lang.IndexOutOfBoundsException:索引 0 超出长度 0 的界限(java selenium)



我正试图用java为selenium上的instagram编写一个机器人程序。我在youtube上观看了它,并在视频中写下了相同的代码。但当我想打开第一个发布在cummon instagram页面上的图片时,我会收到这个错误。你能帮我为什么会出现这个错误吗?它可能是什么?

public class Main {
public static void main(String[] args) {
App app = new App();
app.loginWith("******","*****");
app.navigateProfile("*****");
app.clickFirstPost();
}
}
public class App {
WebDriver driver;
String BASE_URL = "https://www.instagram.com/";
By userLocator = new By.ByCssSelector("input[name='username']");
By passLocator = new By.ByCssSelector("input[name='password']");
By loginBtnLocator = new By.ByCssSelector("button[type='submit']");
By instaLocator = By.className("_ab6-");
By profileNameLocator = By.className("_aada");
By postImageLocator = By.className("_aagw");
public App(){
WebDriverManager.chromedriver().setup();
driver = new ChromeDriver();
driver.get(BASE_URL);
driver.manage().window().maximize();
}
public  void loginWith(String userName, String password){
waitFor(userLocator);
driver.findElement(userLocator).sendKeys(userName);
driver.findElement(passLocator).sendKeys(password);
driver.findElement(loginBtnLocator).click();
}
public void navigateProfile(String profileName){
waitFor(instaLocator);
driver.navigate().to(BASE_URL.concat(profileName));
}
public void clickFirstPost(){
waitFor(profileNameLocator);
driver.findElements(postImageLocator).get(0).click(); // this code ave the error.
}
private void waitFor(By Locator){
WebDriverWait wait = new WebDriverWait(driver,15);
wait.until(ExpectedConditions.visibilityOfElementLocated(Locator));
}
}

我在"等待";以及";findElements";。我不知道问题的原因或解决办法。但是当页面加载时,我认为findElements会以某种方式更改索引的数量。所以我试图直接用";等待";这样,如果有一个类我想点击,那么findElements也可以找到它。这是代码。

//By profileNameLocator = By.className("_aada");
By postImageLocator = By.className("_aagw"); //just used same class for wait and findElements
public void clickFirstPost(){
waitFor(postImageLocator);
driver.findElements(postImageLocator).get(0).click();
}

相关内容

最新更新