Извини, что абстрактно, потому что код бы всё равно невероятно сильно отличался, так как я последний раз на селениуме работал в питоне
1. Так как почта скорее всего построена на фреймворке (react/vue/angular), то она строит элементы динамически, следовательно твоим 1 шагом должно быть то, что ты в драйвере должен выставить некоторый wait/until. То есть ты должен подождать, пока прогрузится страница
// Ждём, пока не будет элемента с name = q
WebElement foo = new WebDriverWait(driver, Duration.ofSeconds(3))
.until(driver -> driver.findElement(By.name("q")));
2. Так как ты подождал загрузку в первом пункте, то тебе можно отказаться от xpath`ов и пользоваться нормальными селекторами (
https://www.selenium.dev/documentation/webdriver/l...). Собственно, можно и с ними, но в почте множество повторяющихся элементов с одинаковыми классами => брать их через xpath - очень больно, так как у них у всех xpath будет разный, а => выстроить динамику в цикле будет трудно
3. Через эти селекторы ты уже сможешь получать всю информацию на странице, которую можно обходить в цикле/сортировать/фильтровать и прочее (там уже и stream api джависткий можно юзать и прочее, и прочее)