我是第一次进行自动化测试,我希望能够自动化gmail并发送带有附件的电子邮件。我正在使用硒Web驱动程序,黄瓜和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
}
有人知道我在附加文件时做错了吗?
答案 0 :(得分:1)
这应该是您的autoit
.exe路径,而不是.jpg路径。您需要创建自动脚本的可执行文件(.exe)
并按照我所说的通过。
Runtime.getRuntime().exec("path of Autoit exe"); // like "C:\\AutoIt3\\new.exe"
答案 1 :(得分:0)
即使不使用 Selenium ,也有几种简单的方法可以自动发送带有附件的电子邮件:
smtp
设置为 GMail 设置单独的插件。在此答案中,我将解释有关通过 Maven 使用常见电子邮件API 的情况。
Commons Email旨在提供用于发送电子邮件的API。它建立在旨在简化的Java Mail API之上。
提供的一些邮件类别如下:
SimpleEmail
-此类用于发送基于基本文本的电子邮件。MultiPartEmail
-此类用于发送多部分消息。这允许带有内联附件或附件的文本消息。HtmlEmail
-此类用于发送HTML格式的电子邮件。它具有MultiPartEmail的所有功能,可轻松添加附件。它还支持嵌入式图像。ImageHtmlEmail
-此类用于发送带有嵌入式图像的HTML格式的电子邮件。它具有HtmlEmail的所有功能,但是可以将所有图像引用转换为嵌入式图像。 EmailAttachment
-这是一个简单的容器类,可轻松处理附件。它用于MultiPartEmail和HtmlEmail的实例。
Maven依赖:
<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===
快照: