2017-02-12 11 views
1

私はセレンの練習をしていて、Gmailの受信トレイから約30Kの未読メールを削除したいと思います。未読チェックボックスを選択しています。多くのロケータとxpathを試しましたが、私のxpathはすべてのメールのチェックボックスを選択しています。SeleniumJava:Gmailで未読メールを削除する

誰が未読メール

PFBのJavaセレンコード

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

のチェックボックスを選択する方法を提案することができますが、あなたはGmail APIに精通していますか?単にロケータなどを実行したい場合は、チェックボックスの位置を確認する方法がありますが、実際の状況ではsmtpサーバの検証/テストが必要な場合はAPIを使用してください。すべての電子メール(スレッド)にはlabelがあり、messagesUnreadを呼び出すと未読メッセージが返されます。あなたが見る必要があるよう

<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> 

が見える:

私の場合は
in:inbox is:unread 
1

、「未読」ドロップダウンオプションのロケータは、次のようになります。また、APIとUIの両方でクエリを使用することができますクラス "JN"および/またはID ":dz"の要素の場合

+0

私はHTML DOMとIDが動的であることを確認しました.... –

+0

@selector = "unread"を探してみると安定します – Gyrotank

0

12のような要素の番号を入力して、クリックしてみてください。

driver.findElements(By.xpath("//*[@role='checkbox']")).get(1).click(); 
関連する問題