我正在进行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();
}
}
答案 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)
您可以尝试提供元素的编号,例如1
和2
,然后点击。
driver.findElements(By.xpath("//*[@role='checkbox']")).get(1).click();