#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. после покупки продукта мне нужно проверить, получаю ли я письма, и после того, как я нажал на новую почту, я должен убедиться, что загрузка продукта присутствует или нет