2017-02-12 4 views
1

Я занимаюсь практикой селена и хочу удалить около 30 тыс. Непрочитанных писем из моего почтового ящика Gmail. Я застрял в выборе непрочитанного флажка. попробовал много локаторов и xpath. Но My xpath выбирает флажок All mail.SeleniumJava: Удаление непрочитанных писем в Gmail

Может кто-нибудь подскажет, как выбрать опцию из непрочитанных писем

PfB Java Selenium код

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 возвращают не прочитанные messeges. Вы можете также использовать запрос, как в API и пользовательский интерфейсе:

in:inbox is:unread 
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> 

Похоже, вы должны смотреть для элемента с классом "JN" и/или id ": dz".

+0

Я проверил HTML DOM и ID динамична .... –

+0

Попробуйте посмотреть на @selector = "непрочитанных", то он должен стабильным – Gyrotank

0

Вы можете попробовать указать номер элемента, например 1, и 2 и попробуйте нажать.

driver.findElements(By.xpath("//*[@role='checkbox']")).get(1).click(); 
Смежные вопросы