gpt4 book ai didi

java - 无法在 Selenium Java 的电子邮件正文中键入文本

转载 作者:太空宇宙 更新时间:2023-11-04 13:00:42 25 4
gpt4 key购买 nike

我想创建发送gmail的功能,但是代码只能发送空正文gmail。我猜框架开关不正确。有人可以告诉我哪个框架是用于 gmail 撰写的吗?我尝试在网上搜索了很多解决方案,但没有得到答案。因为google已经改变了gmail html细节很多,我找不到方法。我是 selenium 的新手,所以如果您能弄清楚如何在 html 中找到框架,我将非常感谢您的帮助。

非常感谢!

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

Edit

要插入带签名的文本,请将文本发送到 div 子级

driver.findElement(By.cssSelector(".Am > div")).sendKeys("some text");

关于java - 无法在 Selenium Java 的电子邮件正文中键入文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34972309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com