Откройте и прочитайте текст электронного письма (из Gmail) с определенным названием с помощью Selenium / Katalon (Java) - PullRequest
0 голосов
/ 07 марта 2019

Я бы хотел:

  • открыть Gmail
driver = new ChromeDriver();
driver.get("https://mail.google.com/mail/#inbox");
  • исследуй название
driver.findElement(By.xpath("//input[@name='q']")).click();
driver.findElement(By.xpath("//input[@name='q']")).clear();
driver.findElement(By.xpath("//input[@name='q']")).sendKeys("Title");
driver.findElement(By.cssSelector("button.gb_2e.gb_df > svg")).click();
  • открыть и сохранить текст всех писем с таким заголовком (возможно, расположенных на разных страницах)

Как я могу это сделать?

1 Ответ

0 голосов
/ 08 марта 2019

ОК, так что после того, как вы искали свой текст, я думаю, что следующим шагом будет выяснить, как щелкать каждый элемент на текущей странице, а затем обрабатывать нумерацию страниц.

Для меня следующий селектор 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();
    }
}
...