如何使用Java在Selenium2(Webdriver)中键入Gmail正文文本

时间:2012-06-20 09:29:11

标签: java gmail webdriver selenium-webdriver testng

我尝试自动从Gmail发送电子邮件(https://accounts.google.com/ServiceLogin?service=mail&passive=true&rm=false&continue=http://mail.google.com/mail/ & scc = 1& ltmpl = default& ltmplcache = 2)使用Selenium WebDriver和Java。首先,我尝试使用Selenium IDE记录测试。 IDE无法记录电子邮件正文。 我尝试通过以下方式键入正文,但遗憾的是它失败了。

driver.findElement(By.xpath(“// textarea [@ name ='body']”))。sendKeys(“body text”);

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

有人可以帮助我吗?

5 个答案:

答案 0 :(得分: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();
  }
}

您还可以使用附件

发送邮件

有关详细信息,请参阅this link

答案 1 :(得分: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();

答案 2 :(得分:1)

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

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

我在WebDriver中编写了以下java代码来键入gmail body,它运行良好。 (我很高兴)

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();

答案 3 :(得分:0)

尝试下面的代码写入正文区域

driver.findElement(By.cssSelector("body[class='editable  LW-avf']")).clear();
driver.findElement(By.cssSelector("body[class='editable  LW-avf']")).sendKeys("body text");

答案 4 :(得分:0)

WebDriver driver = new FirefoxDriver();

WebElement text = driver.findElement(By.className(&#34; LW-avf&#34;));

text.click(); text.sendKeys(&#34;你好&#34);

请尝试使用上面的代码。