Действие щелчка на странице mailinator не работает с транспортиром - PullRequest
0 голосов
/ 12 июля 2020

Я пытаюсь автоматизировать код подтверждения, отправленный на электронную почту в mailinator, когда я запускаю тест, ошибка: "TimeoutError: Время ожидания истекло через 35001 мс" , я думаю, что это проблема с функциями asyn c, но я не уверен в этом.

const emailRow = element(by.className("tr.even.pointer.ng-scope"));
this.setCode = async function() {
    let windows =  await browser.getAllWindowHandles();
    await browser.switchTo().window(windows[1]);
    await browser.wait(ExpectedConditions.visibilityOf(emailRow), 50000);
    browser.actions().mouseMove(emailRow).click().perform();
    await browser.wait(ExpectedConditions.visibilityOf(emailCode), 35000);
}

Я тоже пробовал это

this.setCode = async function() {
    let windows =  await browser.getAllWindowHandles();
    await browser.switchTo().window(windows[1]);
    await browser.wait(ExpectedConditions.elementToBeClickable(emailRow), 50000);
    emailRow.click();
    await browser.wait(ExpectedConditions.visibilityOf(emailCode), 35000);
}

Но у меня такая же проблема, на экране я не вижу, что тест выполняет щелчок, я засыпаю после щелчка в emailRow, но не работает, на изображении есть страница, на которой я хочу выполнить щелчок. Электронная почта Mailinator

Ответы [ 2 ]

0 голосов
/ 25 августа 2020

Думаю, лучше всего использовать их api, а не заходить на их веб-сайт и читать там электронное письмо. В транспортире это очень просто. в зависимости от того, есть ли у вас премиум-аккаунт, вы можете использовать publi c или личный почтовый ящик команды. В случае папки «Входящие» publi c выполните что-то подобное следующему:

const checkMailinatorPublicEmail = async () => {

    process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

    let requestUrl = 'https://mailinator.com/api/v2/domains/public/inboxes/your_inbox_name_here';
    let responseBody = await fetch(requestUrl);
    let responseJson = await responseBody.json();
    return responseJson;
}

Теперь у вас есть все сообщения электронной почты в папке «Входящие» в теле ответа в виде объекта json. Чтобы не усложнять задачу, не используйте stati c publi c командный почтовый ящик, вместо этого используйте случайное имя почтового ящика, чтобы каждый раз у вас было только одно электронное письмо в почтовом ящике, и вы могли анализировать это письмо в соответствии с вашими потребностями.

0 голосов
/ 12 июля 2020

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

 browser.executeScript('arguments[0].click()', emailRow.getWebElement());

Надеюсь, это поможет

Удачного кодирования!

...