Как автоматизировать отправку вложений через GMail с помощью Selenium Java - PullRequest
0 голосов
/ 10 марта 2019

Я впервые занимаюсь автоматизацией тестирования и хочу иметь возможность автоматизировать Gmail и отправить электронное письмо с вложением.Я использую веб-драйвер селена, огурец и Google Chrome для запуска тестов.Моя IDE является intelliJ.Мои тесты работают до тех пор, пока мне не нужно прикрепить файл:

public void givenOnAmazonProductPage() throws Throwable {
    setupSeleniumWebDrivers();
    goTo(PRODUCT_URL);
    driver.findElement(By.id("identifierId")).sendKeys("username");
    driver.findElement(By.xpath("//span[@class='RveJvd snByac']")).click();
    Thread.sleep(3000);
    driver.findElement(By.name("password")).sendKeys("password");
    driver.findElement(By.xpath("//span[@class='RveJvd snByac']")).click();
    Thread.sleep(4000);
    goTo(PRODUCT_URL);
    //driver.wait().until(ExpectedConditions.elementToBeClickable(By.xpath(".//textarea[contains(@aria-label, 'To')]")));
    driver.findElement(By.xpath(".//textarea[contains(@aria-label, 'To')]")).click();
    driver.findElement(By.xpath(".//textarea[contains(@aria-label, 'To')]")).sendKeys("abcd@gmail.com");
    driver.findElement(By.name("subjectbox")).click();
    driver.findElement(By.name("subjectbox")).sendKeys("efgh");
    driver.findElement(By.xpath("(.//*[@aria-label='Message Body'])[2]")).click();
    driver.findElement(By.xpath("(.//*[@aria-label='Message Body'])[2]")).sendKeys("This is an auto-generated mail");
    //driver.findElement(By.xpath("//span[@class='T-I J-J5-Ji T-I-KE L3']")).click();
    //driver.close();
    //click on attachment
    driver.findElement(By.xpath("//div[@class='a1 aaA aMZ']")).click();
    //use autoit tool to attach a file 

. Здесь я пытаюсь прикрепить файл, который находится на моем рабочем столе, но, похоже, он не работает

 Runtime.getRuntime().exec("C:Desktop/6c3bfdec92fad54896275802f938bd83.29.jpg");
    // enter the file path onto the file-selection input field


    Thread.sleep(10000); //wait for 10sec to upload file
}

Кто-нибудь знает, что я делаю неправильно, чтобы прикрепить файл?

Ответы [ 2 ]

1 голос
/ 10 марта 2019

Это должен быть ваш autoit .exe путь, а не .jpg путь.Вам нужно создать исполняемый файл (.exe) из ваших autoit-скриптов и передать, как я уже говорил.

Runtime.getRuntime().exec("path of Autoit exe"); // like "C:\\AutoIt3\\new.exe"
0 голосов
/ 11 марта 2019

Существует несколько простых способов автоматизировать отправку электронного письма с вложением даже без использования Selenium следующим образом:

  • Если вы используете Существуют отдельные плагины для настроек GMail - smtp.
  • Если вы используете Maven , вы можете использовать плагин почтальон .
  • Использование общих адресов электронной почты API непосредственно с вашего Тестового кода .

В этом ответе я расскажу об использовании общих адресов электронной почты API. через Maven .


Commons Email

Commons Email имеет целью предоставить API для отправки электронной почты.Он построен на основе Java Mail API, который он призван упростить.

Ниже приведены некоторые классы почты:

  • SimpleEmail - Этот классиспользуется для отправки базовых текстовых электронных писем.
  • MultiPartEmail - Этот класс используется для отправки составных сообщений.Это позволяет текстовое сообщение с вложенными или вложенными.
  • HtmlEmail - Этот класс используется для отправки электронных писем в формате HTML.Он имеет все возможности MultiPartEmail, что позволяет легко добавлять вложения.Он также поддерживает встроенные изображения.
  • ImageHtmlEmail - Этот класс используется для отправки электронных писем в формате HTML со встроенными изображениями.Он обладает всеми возможностями, такими как HtmlEmail, но преобразует все ссылки на изображения во встроенные изображения.
  • EmailAttachment - Это простой класс-контейнер, позволяющий легко обрабатывать вложения.Он предназначен для использования с экземплярами MultiPartEmail и HtmlEmail.

  • Maven Dependency :

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-email</artifactId>
        <version>1.5</version>
    </dependency>
    
  • Кодовый блок:

    package SendEmailAttachments;
    
    import org.apache.commons.mail.DefaultAuthenticator;
    import org.apache.commons.mail.EmailAttachment;
    import org.apache.commons.mail.EmailException;
    import org.apache.commons.mail.MultiPartEmail;
    
    public class EmailAttachments {
    
        public static void main(String[] args) throws EmailException {
    
            System.out.println("===Test for Sending CommonsEmail started===");  
            // Create the attachment
            EmailAttachment attachment = new EmailAttachment();
            attachment.setPath("C:\\Users\\AtechM_03\\Desktop\\Screenshots\\bad_indentation.png");
            attachment.setDisposition(EmailAttachment.ATTACHMENT);
            attachment.setDescription("Picture of bad indentation");
            attachment.setName("BadIndentation");
            // Create the email message
            MultiPartEmail email = new MultiPartEmail();
            email.setHostName("smtp.gmail.com");
            email.setSmtpPort(465);
            email.setAuthenticator(new DefaultAuthenticator("Matthew@Zoltak.in", "Matthew_Zoltak"));
            email.setSSLOnConnect(true);
            email.setFrom("CommonsEmail@gmail.com");
            email.setSubject("CommonsEmail Test");
            email.setMsg("CommonsEmail test mail ... :-)");
            email.addTo("Matthew@Zoltak.in");
            // add the attachment
            email.attach(attachment);
            // send the email
            email.send();
            System.out.println("===Test for Sending CommonsEmail ended===");
        }
    }
    
  • Вывод на консоль:

    ===Test for Sending CommonsEmail started===
    ===Test for Sending CommonsEmail ended===
    
  • Снимок:

apache_commons_email_attachment

...