提问人:Mariam Aslam 提问时间:11/6/2023 更新时间:11/7/2023 访问量:52
cheerio.load() 需要一个字符串 node_modules/cheerio/lib/load.js:74:1
cheerio.load() expects a string node_modules/cheerio/lib/load.js:74:1
问:
我正在使用 Cypress Typescript,并在我的自动化中集成了 gmail-tester。我面临的问题非常奇怪。我正在尝试单击电子邮件中的按钮,即使我手动单击按钮,即通过输入 URL 显示屏幕,一切似乎都很好,但当我通过获取按钮 URL 并单击似乎没有任何效果时,一切似乎都很好!
/// <reference types="Cypress" />
import * as cheerio from 'cheerio';
import fs from 'fs';
describe("Email assertion:", () => {
it("Using gmail_tester.get_messages(), look for an email with specific subject and link in email body", function () {
cy.task("gmail:get-messages", {
options: {
from: "[email protected]",
subject: "Account confirmation",
include_body: true,
},
}).then((emails: any) => {
assert.isAtLeast(emails.length, 1, "Expected to find at least one email, but none were found!");
assert.isTrue(emails[0].subject.indexOf("Account confirmation") >= 0, "Found email with subject 'Account confirmation'!");
const body = emails[0].html;
const emailContent = emails.html;
// Use Cheerio to extract the link URL from the email content
const $ = cheerio.load(emailContent);
const linkUrl = $('a[href^="http://localhost:3000/Identity/Account/ConfirmEmail"]').attr('href');
// Use cy.visit() to navigate to the link URL
cy.visit(linkUrl);
});
});
});
我厌倦了多种选择,但似乎没有任何效果。
答:
1赞
Al Pugliese
11/7/2023
#1
我无法准确回答,因为缺少调试细节,但由于您无法从我的评论中解决,因此您需要查看的内容。
这完全取决于您从 .emails
.then((emails: any)
错误消息说不是字符串,因此您需要查看并了解如何将 HTML 作为字符串获取emailContent
emails
cheerio.load(<some-html-string-here>)
该名称表示已收到多封电子邮件,因此用于获取一封电子邮件
emails
emails[0]
您已经确认上面是正确的
emails[0]
assert.isTrue(emails[0].subject.indexOf("Account confirmation")
const body = emails[0].html
应该检查一下是否body
是一个字符串body
包含链接a[href^="http://localhost:3000...
如果全部签出,请使用 ,否则需要根据变量中看到的内容进行调整。cheerio.load(body)
评论
0赞
Mariam Aslam
11/8/2023
嗨@AlPugliese我期待您的回复,这对您有什么作用,即使在添加字符串后,它也不会单击按钮 const $ = load(“验证电子邮件地址”, emailContent);
评论
.const body = emails[0].html
const emailContent = emails.html