3

我尝试通过 Gmail (https://accounts.google.com/ServiceLogin?service=mail&passive=true&rm=false&continue=http://mail.google.com/mail/&scc=1<mpl=default<mplcache=2) 自动发送电子邮件在 Java 中使用 Selenium WebDriver。首先,我尝试使用 Selenium IDE 记录测试。IDE 未能记录电子邮件的正文。我尝试通过以下方式输入正文,但不幸的是失败了。

driver.findElement(By.xpath("//textarea[@name='body']")).sendKeys("正文");

错误是:失败:testSendingEmail org.openqa.selenium.ElementNotVisibleException:元素当前不可见,因此可能无法与命令持续时间或超时交互:30.02 秒

有人可以帮我吗?

4

5 回答 5

3

是的..您不能使用Selenium IDE记录电子邮件的正文

在您的项目中包含以下方法并调用该方法发送电子邮件。(无需登录 gmail)

import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public void SendEmail()
{

  // Recipient's email ID needs to be mentioned.
  String to = "abcd@gmail.com";

  // Sender's email ID needs to be mentioned
  String from = "web@gmail.com";

  // Assuming you are sending email from localhost
  String host = "localhost";

  // Get system properties
  Properties properties = System.getProperties();

  // Setup mail server
  properties.setProperty("mail.smtp.host", host);

  // Get the default Session object.
  Session session = Session.getDefaultInstance(properties);

  try{
     // Create a default MimeMessage object.
     MimeMessage message = new MimeMessage(session);

     // Set From: header field of the header.
     message.setFrom(new InternetAddress(from));

     // Set To: header field of the header.
     message.addRecipient(Message.RecipientType.TO,
                              new InternetAddress(to));

     // Set Subject: header field
     message.setSubject("This is the Subject Line!");

     // Now set the actual message
     message.setText("This is actual message");

     // Send message
     Transport.send(message);
     //System.out.println("Sent message successfully....");
  }
catch (MessagingException mex) {
     mex.printStackTrace();
  }
}

您还可以发送带有附件的邮件

有关更多信息,请参阅此链接

于 2012-06-20T10:31:50.747 回答
2

使用类时,它会抛出并且找不到错误元素,最好使用表索引。

        WebElement frame1 = driver.findElement(By.xpath("//iframe[@tabindex='1']"));
    driver.switchTo().frame(frame1);
    WebElement editable = driver.switchTo().activeElement();
    String mailBody = "Hi," + '\n' + "Gmail Body";
    editable.sendKeys(mailBody);
    driver.switchTo().defaultContent();
于 2013-10-08T10:37:02.743 回答
1

以下是用于输入 gmail 正文的 HTML 代码:

<iframe frameborder="0" style="padding: 0pt; height: 218px; background-color: white;" class="Am Al editable" id=":4z" tabindex="1"></iframe>

我在 WebDriver 中编写了以下 java 代码来输入 gmail 正文,它运行良好。(我很开心)

WebDriver driver = new FirefoxDriver();
WebElement frame1 = driver.findElement(By.xpath("//iframe[@class='Am Al editable']"));
driver.switchTo().frame(frame1);
WebElement editable = driver.switchTo().activeElement();
String mailBody = "Hi," + '\n' + "I'm Ripon from Dhaka, Bangladesh.";
editable.sendKeys(mailBody);
driver.switchTo().defaultContent();
于 2012-11-02T08:42:16.400 回答
0

WebDriver 驱动=新的 FirefoxDriver();

WebElement text=driver.findElement(By.className("LW-avf"));

文本.click(); text.sendKeys("你好");

请尝试使用上面的代码。

于 2014-11-11T17:52:06.043 回答
0

试试下面的代码写在正文区域

driver.findElement(By.cssSelector("body[class='editable  LW-avf']")).clear();
driver.findElement(By.cssSelector("body[class='editable  LW-avf']")).sendKeys("body text");
于 2012-06-22T09:51:10.220 回答