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でSeleniumWebDriverを使用します。まず、SeleniumIDEを使用してテストを記録しようとしました。IDEは電子メールの本文を記録できませんでした。以下の方法で本文を入力してみましたが、残念ながら失敗しました。

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

エラーは次のとおりです。失敗:testSendingEmail org.openqa.selenium.ElementNotVisibleException:要素は現在表示されていないため、コマンド期間またはタイムアウトと対話できない可能性があります:30.02秒

誰か助けてくれませんか?

4

5 に答える 5

3

はい..SeleniumIDEを使用して電子メールの本文を記録することはできません。

プロジェクトに次のメソッドを含め、そのメソッドを呼び出してメールを送信します(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コードを記述してGmailBodyと入力しましたが、うまく機能しました。(私は幸せです)

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

以下のコードを試して、本文領域に書き込みます

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 に答える
0

WebDriverドライバー=新しいFirefoxDriver();

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

text.click(); text.sendKeys( "Hello");

上記のコードを使用してみてください。

于 2014-11-11T17:52:06.043 に答える