我在项目中工作,我必须从某个网站购买产品。我将在Gmail中收到邮件,我必须点击收到的电子邮件(未读邮件)并与点击的元素进行互动。
到目前为止,我已经购买了该产品,现在我已经坚持使用Gmail了。点击“未读邮件”后,我无法打开未读邮件并与该元素进行互动。 这是我的代码
driver.get(" https://www.gmail.com&#34); 。driver.manage()窗口()最大化();
JavascriptExecutor exe = (JavascriptExecutor) driver;
Integer numberOfFrames = Integer.parseInt(exe.executeScript("return window.length").toString());
System.out.println("Number of iframes on the page are " + numberOfFrames);
driver.findElement(By.id("Email")).sendKeys("your mail");
driver.findElement(By.xpath(".//*[@id='next']")).click();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
WebElement ele4=driver.findElement(By.xpath("//*[@id='Passwd']"));
new WebDriverWait(driver, 30).until(ExpectedConditions.visibilityOfElementLocated((By.xpath("//*[@id='Passwd']"))));
ele4.sendKeys("yourpassword");
driver.findElement(By.xpath("//*[@id='signIn']")).click();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
List<WebElement> unreademeil = driver.findElements(By.xpath("//*[@id=':3d']"));
String MyMailer = "StrapUI";
for(int i=0;i<unreademeil.size();i++)
{
if(unreademeil.get(i).isDisplayed()==true)
{
if(unreademeil.get(i).getText().equals(MyMailer))
{
System.out.println("Yes we have got mail form " + MyMailer);
break;
}
else
{
System.out.println("No mail form " + MyMailer);
}
}
}
driver.findElement(By.xpath("//*[@id=':3d']")).click();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
Thread.sleep(10000);
driver.switchTo().frame(0);
Thread.sleep(5000);
((JavascriptExecutor) driver).executeScript("window.scrollBy(0,500)", "");
Thread.sleep(3000);
}
}
答案 0 :(得分:0)
为什么要使用Selenium与电子邮件进行互动?除非您为Google创建自动化测试,否则不应该有理由使用Selenium。这样做的原因是Google对Gmail所做的每一点改动都有可能破坏您的脚本并需要修改。
相反,我建议使用'IMAP'库来帮助您。您可以登录并获取新消息。使用此功能,您可以查看要在电子邮件中查看的内容。
例如:我正在为我曾经工作过的公司创建集成测试。当我使用某个功能时,会发送包含网址的电子邮件。要验证这是否正常工作,我必须收到此电子邮件并在其中找到该网址。接下来,我使用Selenium获取电子邮件中的网址,并验证它是否重定向到我预期的位置。我使用imaplib
为Python
收集了电子邮件。我登录后,收集了我的INBOX并获取了未读消息。