Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

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

email
codeception
smtp
api
Теги: #<Tag:0x00007f7b704ce030> #<Tag:0x00007f7b704cdef0> #<Tag:0x00007f7b704cddb0> #<Tag:0x00007f7b704cdc70>

(Ugin Berets) #1

Есть задача протестировать функцию восстановления пароля. При использовании приёмочных тестов codeception проблем не возникает. Но я хочу попробовать сделать это функциональными тестами. Вопрос в том можно ли как нибудь без браузера получить доступ к письму на gmail? Например через API.


Не могу найти селекторы или XPATH в Gmail
(Artur Korobeynyk) #2

smtp (pop3, imap) клиент? Что-то гуглом должно поддерживаться. Библиотеки для протоколов тоже будут полюбому


(Myroslav Oleinykov) #3

Конечно же можно и даже нужно. Сторонние third-party приложения ведь не через UI забирают информацию :slight_smile: Для этого есть отличный Gmail API:

Конкретно для получения содержания письма и пример того как это можно сделать находится тут:
https://developers.google.com/gmail/api/v1/reference/users/messages/get


(Ugin Berets) #4

Спасибо за быстрый ответ, буду пробовать!


(Ugin Berets) #5

Во время выполнения метода “getMessage” появляется ошибка " (400) Invalid id value" .
ID сообщения я взял из оригинала письма (то что между <>) :
Message-ID: <************************>

Но на самом деле мне во время выполнения теста ID письма будет не известен. Мне надо как-то обратится к последнему письму. (ну или к единственному, если допустить что перед запуском теста я буду чистить почту)


(Ugin Berets) #6

Вопрос решился с помощью метода “listMessages”, который возвращает массив всех писем.


(Svyatoslav Hnat) #7

Добрый день,

Делал подобную вещь, пришлось парсить письмо и заголовки самому, через проблем с кодировками.

Делаю так,
Получаем все письмо по заданому критерию, в моем случае на С#

request.Q = “subject:” + subject + " after:" + DateTime.Now.AddDays(-1).ToString(“yyyy/M/dd”);
где request ето UsersResource.MessagesResource.ListRequest

получаем список ІД подходящих по критерию,
дальше загружаем письма в таком формате FormatEnum.Raw

Использую свой парсер и работаю с обєктом Емейл.

В котором есть линки, изображения и все проперти.

Можно использовать гугловский обьект Message.

Будут вопросы, пишите.

Удачи Вам.


(Svyatoslav Hnat) #8

Забыл сказать про IMAP, его не используете, стабильности не буде (из личного опыта).

Регулярные ошибки, разве что в цыкле его гонять.

АРІ работает отлично, стабильно, надежно!

У в нем есть недоработки, которие фиксить никто не будет.


(Pavel Ordenko) #9

Никогда не было проблем с IMAP у GMail, так же из лтчного опыта :slight_smile: (сделано было с помощью javax.mail). Возможно, у Вас реализация работы была такая, не стабильная? :stuck_out_tongue:


(Svyatoslav Hnat) #10

Возможно вам удалось сделать лучше, возможно потому что у нас несколько машын на один ящик ходили. Отказались от imap, всеравно были проблемы с кодировками, API работает наура,


(Volodymyr) #11

Доброго времени суток
подскажите пожалуйста как подключить Gmail API к проекту на codeception + webdriver
тестировщики все же на форуме :slight_smile: