Взаимодействие с почтовыми ящиками Gmail с помощью Selenium webdriver

#selenium

#selenium

Вопрос:

Я работаю над проектом, в котором мне нужно купить продукт с какого-либо веб-сайта. Я получу письмо в Gmail, я должен нажать на полученное электронное письмо (непрочитанное письмо) и взаимодействовать с выбранным элементом.

До сих пор я купил продукт, и теперь я застрял в Gmail; Я не могу открыть непрочитанную почту и взаимодействовать с элементом, когда нажимаю «Непрочитанная почта». вот мой код

driver.get(«https://www.gmail.com «); драйвер.управление ().окно().развернуть();

   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);
    }
  

}

Комментарии:

1. Поделитесь своим кодом, чтобы мы могли взглянуть на него и попытаться определить проблему.

Ответ №1:

Почему вы хотите взаимодействовать с электронной почтой с помощью Selenium? Если вы не создаете автоматические тесты для Google, не должно быть причин делать это с помощью Selenium. Причина этого в том, что каждое небольшое изменение, вносимое Google в Gmail, может привести к поломке вашего скрипта и требует модификации.

Вместо этого я бы рекомендовал использовать библиотеку IMAP, чтобы помочь вам в этом. Вы можете войти в систему и получать новые сообщения. Используя это, вы можете проверить все, что хотите проверить в своей электронной почте.

Например: я создавал интеграционные тесты для компании, в которой я работал. Когда я использовал определенную функцию, отправлялось электронное письмо, содержащее URL-адрес. Чтобы убедиться, что это работает правильно, мне нужно было получить это электронное письмо и найти в нем URL-адрес. Затем я использовал Selenium, чтобы получить URL-адрес, который был в электронном письме, и проверил, перенаправил ли он меня туда, куда я ожидал. Я собрал электронную почту с помощью imaplib for Python . Я вошел в систему, собрал свой почтовый ящик и извлек непрочитанные сообщения.

Комментарии:

1. после покупки продукта мне нужно проверить, получаю ли я письма, и после того, как я нажал на новую почту, я должен убедиться, что загрузка продукта присутствует или нет