mailinator 页面中的单击操作不适用于量角器

The click action in mailinator page does not work with protractor

我正在尝试自动发送到 mailinator 中的电子邮件的验证码,当我 运行 测试错误是:“TimeoutError:等待 35001 毫秒后超时”,我认为这是异步函数的问题,但我对此并不安全。

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 中点击后休眠但不起作用,在图像中有页面我要执行点击。

我相信您应该尝试第二种方法。在第一种方法中,您正在等待元素可见,但不保证元素可点击。 通过查看第二种方法,代码看起来不错。我的建议是尝试像下面这样更改点击方法

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

希望这会有所帮助

编码愉快!

我认为最好的办法是使用他们的 api,而不是去他们的网站阅读那里的电子邮件。在量角器中,这很容易。根据您是否拥有他们的高级帐户,您可以使用 public 或私人团队收件箱。对于 public 收件箱,执行类似于以下的操作:

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 对象。为简单起见,不要使用静态 public 团队收件箱,而是使用随机收件箱名称,这样每次收件箱中只有一封电子邮件,您可以根据需要解析该电子邮件。