Проблема в том, что вы начинаете с получения всех ссылок «Правка» на странице, проходите их по кругу, но в середине цикла вы заново получаете ссылку «Правка» (используя By.linkText(a[i])
) и получаете только первую ищелкните по нему.
Вы уже загрузили все ссылки редактирования, вам не нужно ничего повторно (и вам не нужно проверять, что ссылка начинается с «E», поскольку это часть вашего локатора,text()='Edit'
.
Кроме того, вы можете избежать StaleElementException
, повторно загружая элементы в каждом цикле. StaleElementException
s происходит потому, что страница (или часть страницы) перезагружается, и вы пытаетесь использоватьпеременная, хранящая ссылку на элемент перед перезагрузкой.
Упрощенный код приведен ниже.
By editButtonLocator = By.xpath("//a[text()='Edit']");
List<WebElement> alllinks = driver.findElements(editButtonLocator);
for (int i = 0; i < alllinks.size(); i++)
{
alllinks.get(i).click();
driver.findElement(By.xpath("//button[@name='save']")).click();
// get the list again to avoid StaleElementException
alllinks = driver.findElements(editButtonLocator);
}