Selenium等到发送电子邮件

时间:2015-06-12 17:40:52

标签: java selenium selenium-webdriver automation webdriver

我正在编写一个测试gmail功能的简单程序,包括发送电子邮件。

我让程序发送一封电子邮件,一旦确认已发送,它就会退出。

我不想在发送消息时注销,只有在完成后才能注销。

因此,如果您有Gmail,并且当您发送邮件时,您会在收件箱上方看到一条通知,上面写着“您的邮件已发送。请查看邮件。”

cssSelector就是div.vh。

所以我希望我的程序在我退出之前等到该窗口弹出。

但有时由于互联网速度,它会在消息出现之前退出。

这是我的代码:

WebElement element = (new WebDriverWait(driver,10)).until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("div.vh")));

2 个答案:

答案 0 :(得分:1)

相反,你可以尝试过类似的东西:

WebElement element = null;
WebDriverWait wait = new WebDriverWait(driver,10);
int counter = 0; //optional, just to cut off infinite waiting 
while( element == null && counter != 10 ){
    try{
        element = wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("div.vh")));
    } catch(TimeoutException te) {
        log.info("Not loaded yet, continuing");
        counter++;
    }
}
// logout now.

答案 1 :(得分:-1)

单击“发送”按钮后,尝试等待,直到加载文本消失。

//Click send
driver.findElement(By.xpath("//div[text()='Send']")).click();

//wait for element to disappear

waitForElementToDisappear(By.xpath("//div[contains(text(),'Loading')]"));

or

 //wait for element to appear
waitForElementToAppear(By.id("link_undo"));


    void waitForElementToDisappear(By locator)
    {
                int i=0;
                while(isElementPresent(locator))
                {
                    Thread.sleep(100);
                    i++;
                    if(i>50)
                    {
                        break;
                    }
                }
    }

   void waitForElementToAppear(By locator)
    {
                int i=0;
                while(!isElementPresent(locator))
                {
                    Thread.sleep(100);
                    i++;
                    if(i>50)
                    {
                        break;
                    }
                }
    }

您可以在下面的链接中找到isElementPresent方法实现。

isElementPresent is very slow in case if element does not exist.