ОК, так что после того, как вы искали свой текст, я думаю, что следующим шагом будет выяснить, как щелкать каждый элемент на текущей странице, а затем обрабатывать нумерацию страниц.
Для меня следующий селектор CSSнаходит все элементы электронной почты на странице:
WebElement[] listOfEmailElements = driver.findElements(By.cssSelector('tbody > tr.zA'));
Если, например, у вас есть 50 результатов на этой странице, он вернет массив, содержащий эти 50 веб-элементов.
Теперь мы должныциклически просматривайте электронные письма, нажимая на каждое из них, затем щелкните значок ... и загрузите электронное письмо и вернитесь на главную страницу внутри цикла for.
for (WebElement element: listOfEmailElements) {
element[i].click();
//The following is the only way I could find to uniquely identify the '...' icon
driver.findElement(By.cssSelector('div.T-I.J-J5-Ji.T-I-Js-Gs.aap.T-I-awG.T-I-ax7.L3').click();
//Couldn't find a way to uniquely identify the "Download" button but the following selector gets
//an array of options from the list you just opened above and download is at an index of 16
driver.findElements(By.cssSelector('div.cj'))[16].click();
//simply use the browser's back button to navigate back to the main list
driver.navigate().back();
}
ОК, теперь нам нужно справиться с нумерацией страниц.
Мне кажется, что значок каретки, который при переходе на следующую страницу, когда он включен, уникально идентифицируется как
driver.findElement(By.cssSelector('div.T-I.J-J5-Ji.amD.T-I-awG.T-I-ax7.T-I-Js-Gs.L3'))
Однако, когда кнопка отключена, этот селектор находит два элемента.Я думаю, это делает так, чтобы следующий код делал то, что вы хотите:
while (driver.findElements(By.cssSelector('div.T-I.J-J5-Ji.amD.T-I-awG.T-I-ax7.T-I-Js-Gs.L3')).size() == 1) {
for (WebElement element: listOfEmailElements) {
element[i].click();
//The following is the only way I could find to uniquely identify the '...' icon
driver.findElement(By.cssSelector('div.T-I.J-J5-Ji.T-I-Js-Gs.aap.T-I-awG.T-I-ax7.L3').click();
//Couldn't find a way to uniquely identify the "Download" button but the following selector gets
//an array of options from the list you just opened above and download is at an index of 16
driver.findElements(By.cssSelector('div.cj'))[16].click();
//simply use the browser's back button to navigate back to the main list
driver.navigate().back();
}
}