SeleniumJava:删除Gmail中的未读邮件

时间:2017-02-12 13:34:11

标签: java selenium

我正在进行selenium练习,想要从我的Gmail收件箱中删除大约30K未读邮件。我坚持选择未读复选框。尝试了很多Locators和xpath但我的xpath选择了All mail的复选框。

任何人都可以建议如何选择未读邮件的复选框

PFB Java Selenium Code

import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class Unread_Gmail {
public static void main(String[] args) throws InterruptedException {
    WebDriver driver;

driver = new FirefoxDriver();
driver.manage().deleteAllCookies();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

driver.get("https://accounts.google.com/ServiceLogin?continue=https%3A%2F%2Fmail.google.com%2Fmail%2F&service=mail&sacu=1&rip=1#identifier");

driver.findElement(By.id("Email")).sendKeys("*********@gmail.com");
driver.findElement(By.id("next")).click();
driver.findElement(By.id("Passwd")).sendKeys("******");
driver.findElement(By.id("signIn")).click();


Thread.sleep(3000);


driver.findElement(By.xpath("//div[@class='G-tF']/div[1]/div")).click();
driver.findElement(By.xpath(".//*[@id=':z2']/div")).click();

//driver.findElement(By.xpath("//div[@class='J-J5-Ji J-JN-M-I-Jm'][1]")).click();

//driver.findElement(By.xpath("//div[@class='J-J5-Ji J-JN-M-I-Jm']")).click();
//driver.findElement(By.id("z2")).click();
//driver.findElement(By.xpath("//div[@class='J-N-Jz']")).click();
//driver.findElement(By.id("z2")).click();

}
}

3 个答案:

答案 0 :(得分:3)

您熟悉Gmail API吗?如果您只想练习定位器等,找到复选框是可行的方法,但在“现实生活”中,当您必须验证/测试smtp服务器时,使用API​​是可行的方法。每个电子邮件(线程)都有一个label,调用messagesUnread将返回未经重复的消息。您还可以使用API​​和UI中的查询:

webpack

答案 1 :(得分:1)

就我而言,“未读”下拉选项的定位器如下所示:

<div class="J-N" selector="unread" role="menuitem" id=":dz" style="user-select: none;">
    <div class="J-N-Jz" style="user-select: none;">Unread</div>
</div>

看起来你需要查找类“J-N”和/或id“:dz”的元素。

答案 2 :(得分:0)

您可以尝试提供元素的编号,例如12,然后点击。

driver.findElements(By.xpath("//*[@role='checkbox']")).get(1).click();