2016-04-21 3 views
0

Мне нужно открыть почту из почтового ящика Gmail с помощью веб-редактора selenium, используя java в Eclipse IDE. Есть ли способ сделать это с помощью xpath?Откройте почту из почтового ящика Gmail с помощью selenium webdriver с помощью java

+0

Да, есть способ. – Guy

+0

Я бы сказал ** нет **. (Чтобы соответствовать качеству вопроса.) Вы ничего не можете открыть с помощью xpath. ;) –

+0

При запросе запроса на кодирование вы должны публиковать все, что вы пробовали сами. Просто просить о помощи, не пытаясь с вашей стороны, не поможет вам в получении ответов. – Akbar

ответ

0
//open a mail from the gmail inbox. 
List<WebElement> a = driver.findElements(By.xpath("//*[@class='yW']/span")); 
      System.out.println(a.size()); 
      for (int i = 0; i < a.size(); i++) { 
       System.out.println(a.get(i).getText()); 
       if (a.get(i).getText().equals("Support")) //to click on a specific mail. 
        {           
        a.get(i).click(); 
       } 
      } 
1

Привет плз попробовать, как это ниже код проверяет непрочитанной почты только

public static void main(String[] args) { 
    // TODO Auto-generated method stub 

System.setProperty("webdriver.chrome.driver","D:\\eclipseProject\\StackOverFlow\\chromedriver_win32 (1)\\chromedriver.exe"); 
WebDriver driver = new ChromeDriver(); 
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); 
driver.manage().window().maximize(); 

driver.get("https://accounts.google.com/ServiceLogin?"); 

// gmail login 
driver.findElement(By.id("Email")).sendKeys("your gmail username"); 
driver.findElement(By.id("next")).click(); 
driver.findElement(By.id("Passwd")).sendKeys("your gmail password"); 
driver.findElement(By.id("signIn")).click(); 

// some optional actions for reaching gmail inbox 
driver.findElement(By.xpath("//*[@title='Google apps']")).click(); 
driver.findElement(By.id("gb23")).click(); 

// now talking un-read email form inbox into a list 
List<WebElement> unreademeil = driver.findElements(By.xpath("//*[@class='zF']")); 

// Mailer name for which i want to check do i have an email in my inbox 
String MyMailer = "Udacity"; 

// real logic starts here 
for(int i=0;i<unreademeil.size();i++){ 
    if(unreademeil.get(i).isDisplayed()==true){ 
     // now verify if you have got mail form a specific mailer (Note Un-read mails) 
     // for read mails xpath loactor will change but logic will remain same 
     if(unreademeil.get(i).getText().equals(MyMailer)){ 
      System.out.println("Yes we have got mail form " + MyMailer); 
      // also you can perform more actions here 
      // like if you want to open email form the mailer 
      break; 
     }else{ 
      System.out.println("No mail form " + MyMailer); 
     } 
    } 
} 

}

+0

Привет, спасибо за помощь. Я пробовал это и получил это нормально: Список x = driver.findElements (By.xpath ("// * [@ class = 'yW']/span")); System.out.println (x.size()); for (int i = 0; i Binu

+0

m рад, что это помогло вам поблагодарить –

+0

в соответствии с документом selenium, это не повод увидеть [худшие практики] (https://seleniumhq.github.io/docs/worst.html) – mancocapac

1

Идеальным способом было бы не использовать селен для автоматизации Gmail, а использовать API Gmail (https://developers.google.com/gmail/api/#how_do_i_find_out_more) чтобы проверить, успешно ли отправлено сообщение. Если вы не хотите учиться проверять сообщения на уровне API, я настоятельно рекомендую использовать HTML-версию gmail, используя эту ссылку, поскольку исходный url для gmail (https://mail.google.com/mail/?ui=html) с использованием gmail с включенным javascript будет намного сложнее иметь надежный тестовый сценарий.

0

упаковка в упаковке1; import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By; 

импорт org.openqa.selenium.chrome.ChromeDriver;

public class class1 { 
    public static void main(String[] args) throws InterruptedException{ 
     System.setProperty("webdriver.chrome.driver","C:\\Users\\name\\Desktop\\chromedriver.exe"); 
     ChromeDriver driver=new ChromeDriver(); 
     driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); 
     driver.get("https://accounts.google.com/ServiceLogin/identifier?service=mail&passive=true&rm=false&continue=https%3A%2F%2Fmail.google.com%2Fmail%2F&ss=1&scc=1&ltmpl=default&ltmplcache=2&emr=1&osid=1&flowName=GlifWebSignIn&flowEntry=ServiceLogin"); 
     driver.findElement(By.id("identifierId")).sendKeys("****@gmail.com"); 
     driver.findElement(By.id("identifierNext")).click(); 
     driver.findElement(By.xpath("//input[@aria-label='Enter your password' and @name='password']")).sendKeys("********"); 
     Thread.sleep(200); 
     driver.findElement(By.id("passwordNext")).click(); 


    }}