使用 java 使用 selenium webdriver 从 Gmail 收件箱打开邮件

Bin*_*inu 1 java selenium xpath incoming-mail selenium-webdriver

我需要使用 Eclipse IDE 中的 java 使用 selenium webdriver 从 Gmail 收件箱打开邮件。有没有办法使用 xpath 做到这一点?

son*_*nhu 5

理想的方法是不使用 selenium 自动化 gmail,而是使用 Gmail API ( https://developers.google.com/gmail/api/#how_do_i_find_out_more ) 来验证邮件是否已成功发送。如果您不想学习如何在 API 级别检查邮件,我强烈建议您使用 HTML 版本的 gmail 使用此链接作为 gmail 的初始 url ( https://mail.google.com/mail/?ui =html ) 使用启用了 javascript 的 gmail 将使获得可靠的测试脚本变得更加困难。


Zhi*_*nov 5

这是我的解决方案,没有任何 thread.sleap() 等。

   driver.get("https://mail.google.com/");                                                                                                                        

   WebElement userElement = wait.until(ExpectedConditions.elementToBeClickable(By.id("identifierId")));                                                           
   userElement.click();                                                                                                                                           
   userElement.clear();                                                                                                                                           
   userElement.sendKeys(properties.getProperty("username"));                                                                                                      

   WebElement identifierNext = wait.until(ExpectedConditions.elementToBeClickable(By.id("identifierNext")));                                                      
   identifierNext.click();                                                                                                                                        

   WebElement passwordElement = wait.until(ExpectedConditions.elementToBeClickable(By.name("password")));                                                         
   passwordElement.click();                                                                                                                                       
   passwordElement.clear();                                                                                                                                       
   passwordElement.sendKeys(properties.getProperty("password"));                                                                                                  

   WebElement passwordNext = wait.until(ExpectedConditions.elementToBeClickable(By.id("passwordNext")));                                                          
   passwordNext.click();                                                                                                                                          

   WebElement composeElement = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@role='button' and (.)='Compose']")));                            
   composeElement.click();                                                                                                                                        

   WebElement maximizeEmailElement = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//td//img[2]")));                                               
   maximizeEmailElement.click();                                                                                                                                  

   WebElement sendToElement = wait.until(ExpectedConditions.elementToBeClickable(By.name("to")));                                                                 
   sendToElement.click();                                                                                                                                         
   sendToElement.clear();                                                                                                                                         
   sendToElement.sendKeys(String.format("%s@gmail.com", properties.getProperty("username")));                                                                     

   WebElement subjectElement = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@name = 'subjectbox']")));                                        
   subjectElement.click();                                                                                                                                        
   subjectElement.clear();                                                                                                                                        
   subjectElement.sendKeys(properties.getProperty("email.subject"));                                                                                              

   WebElement emailBodyElement = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@role = 'textbox']")));                                         
   emailBodyElement.click();                                                                                                                                      
   emailBodyElement.clear();                                                                                                                                      
   emailBodyElement.sendKeys(properties.getProperty("email.body"));                                                                                               

   WebElement sendMailElement = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//div[text()='Send']")));                                            
   sendMailElement.click();                                                                                                                                       

   wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[contains(text(),'Message sent')]")));                                                   
   List<WebElement> inboxEmails = wait.until(ExpectedConditions.visibilityOfAllElements(driver.findElements(By.xpath("//*[@class='zA zE']"))));                   

   for(WebElement email : inboxEmails){                                                                                                                           
       if(email.isDisplayed() && email.getText().contains("email.subject")){                                                                                                                                   
           email.click();                                                                                                                                         

           WebElement label = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[contains(@title,'with label Inbox')]")));                    
           WebElement subject = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//h2[contains(text(),'Subject of this message')]")));          
           WebElement body = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[contains(text(),'Single line body of this message')]")));   

       }                                                                                                                                                          
   }       
Run Code Online (Sandbox Code Playgroud)