无法在Selenium Java的电子邮件正文中键入文本
我想创建发送gmail功能,但代码只能发送空体gmail。我猜帧切换不正确。有人能告诉我哪一帧是用来写gmail的吗?我试图在网上搜索很多分辨率,但没有得到答案。因为谷歌已经改变了很多gmail html的细节,我找不到方法。我是selenium的新手,因此如果您能找出如何在html中查找框架,我将感谢您的帮助 非常感谢无法在Selenium Java的电子邮件正文中键入文本,java,selenium,gmail,Java,Selenium,Gmail,我想创建发送gmail功能,但代码只能发送空体gmail。我猜帧切换不正确。有人能告诉我哪一帧是用来写gmail的吗?我试图在网上搜索很多分辨率,但没有得到答案。因为谷歌已经改变了很多gmail html的细节,我找不到方法。我是selenium的新手,因此如果您能找出如何在html中查找框架,我将感谢您的帮助 非常感谢 package com.email.test; import java.text.SimpleDateFormat; import java.util.Date; impor
package com.email.test;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
public class send_email {
private static WebDriver driver;
private static String baseUrl;
public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub
String username = "robertredrain@gmail.com";
String password = "robertIlinda1987RED";
ComposeMail(username, password);
}
public static void ComposeMail(String username, String password) throws InterruptedException{
Date dNow = new Date();
SimpleDateFormat subjectdate = new SimpleDateFormat("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
String emailsubject = "Current time" + subjectdate.format(dNow).toString();
String tomailid = "robertredrain@yahoo.com";
String mailbody = password + "\n" + "Great! you sent email:-)" + "\n" + "Regards," + "\n" + "Robert";
driver = new FirefoxDriver();
baseUrl = "https://mail.google.com";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
/* Navigate to Gmail */
driver.get(baseUrl+"/intl/en/mail/help/about.html");
driver.manage().window().maximize();
/* Enter username and password */
driver.findElement(By.id("gmail-sign-in")).click();
driver.findElement(By.id("Email")).clear();
driver.findElement(By.id("Email")).sendKeys(username);
driver.findElement(By.id("next")).click();
driver.findElement(By.id("Passwd")).clear();
driver.findElement(By.id("Passwd")).sendKeys(password);
driver.findElement(By.id("signIn")).click();
//System.out.println(driver.getTitle()); Inbox (8,142) - robertredrain@gmail.com - Gmail
/*Verify login*/
String title = "Gmail";
if(driver.getTitle().contains(title)){
System.out.println("Logged in sucessfully !!!" + driver.getTitle());
}else{
System.out.println("Unable to loggin :-( " + driver.getTitle());
}
/* Compose email */
Thread.sleep(1000);
driver.findElement(By.xpath("/html/body/div[7]/div[3]/div/div[2]/div[1]/div[1]/div[1]/div[2]/div/div/div[1]/div/div")).click();
driver.findElement(By.className("vO")).sendKeys(tomailid);
driver.findElement(By.className("aoT")).sendKeys(emailsubject);
driver.switchTo().frame(driver.findElement(By.xpath("//iframe[@tabindex='-1']")));
WebElement printbody = driver.switchTo().activeElement();
printbody.sendKeys(mailbody);
driver.switchTo().defaultContent();
driver.findElement(By.xpath("//div[text()='Send']")).click();
}
}
你不需要在这里切换到帧。只需做与主题和收件人相同的事情
driver.findElement(By.className("Am")).sendKeys("some text");
编辑
要插入带有签名的文本,请将文本发送给div子项
driver.findElement(By.cssSelector(".Am > div")).sendKeys("some text");
你不需要在这里切换到帧。只需做与主题和收件人相同的事情
driver.findElement(By.className("Am")).sendKeys("some text");
编辑
要插入带有签名的文本,请将文本发送给div子项
driver.findElement(By.cssSelector(".Am > div")).sendKeys("some text");
我们真的不需要知道你的gmail密码。我们真的不需要知道你的gmail密码。如果我禁用签名选项,你的代码可以工作。有没有办法添加带签名的文本?另一个问题是,你在哪里找到类名“Am”?当我在撰写电子邮件正文处“检查元素”时,类名显示“Am Al editable LW avf”,但这不起作用。@robertredrain我为signature@robertredrain对于您的问题,“Am”、“Al”、“editable”和“LW avf”是四个不同的类,您可以通过每个类来定位元素,所有这些类一起
driver.findElement(By.cssSelector(“.Am.Al.editable.LW avf”)
或使用其中的两个或三个。非常感谢您的帮助。如果我禁用签名选项,您的代码可以工作。有什么方法可以添加带有签名的文本吗?另一个问题是,您在哪里找到类名“Am”?当我在撰写电子邮件正文中“检查元素”时,类名显示“Am Al editable LW avf”,但这不起作用。@robertredrain我为signature@robertredrain对于您的问题,“Am”、“Al”、“editable”和“LW avf”是四个不同的类,您可以通过每个类来定位元素,所有这些类一起driver.findelelement(by.cssSelector(“.Am.Al.editable.LW avf”))
或使用其中的两个或三个。非常感谢您的帮助。