Javascript Cypress-访问从第三方获得的URL(电子邮件)
在我的测试中,我想访问通过电子邮件发送的URL。我可以成功地将URL保存在变量中,但无法让cypress转到该URL。我一直得到下面的错误。我不完全理解cypress的“承诺式”,所以我不确定如何解决这个问题 未捕获的(承诺中的)Cypresser错误:Cypress检测到您返回 在调用一个或多个cy命令时来自命令的承诺 在这个承诺中 返回承诺的命令是: 得到 您在承诺中调用的cy命令是: cy.请求() 因为Cypress命令已经像promise一样了,您不需要这样做 把它们包装起来,或者回报你自己的承诺 Cypress将用最终的Cypress解决您的命令 命令让步Javascript Cypress-访问从第三方获得的URL(电子邮件),javascript,cypress,Javascript,Cypress,在我的测试中,我想访问通过电子邮件发送的URL。我可以成功地将URL保存在变量中,但无法让cypress转到该URL。我一直得到下面的错误。我不完全理解cypress的“承诺式”,所以我不确定如何解决这个问题 未捕获的(承诺中的)Cypresser错误:Cypress检测到您返回 在调用一个或多个cy命令时来自命令的承诺 在这个承诺中 返回承诺的命令是: 得到 您在承诺中调用的cy命令是: cy.请求() 因为Cypress命令已经像promise一样了,您不需要这样做 把它们包装起来,或者回报
这难道不只是从cy.request中删除所有引号和加号那么简单吗?这就是我们使用存储的url的方式,也是有效的。但是存储的url不是来自电子邮件,而是来自页面上的元素我也像你一样尝试过,但Cypress不允许。 您必须通过cy.request()到Mailosaur API来执行此操作 试着这样做:
cy.request({
method: 'POST',
url: 'https://mailosaur.com/api/messages/search',
auth: {
username: 'API_key',
},
body: {
sentTo: 'yourEmail',
},
qs: {
server: 'yourServer',
page: 0,
itemsPerPage: 50,
},
});
我今天不得不面对这个问题。
如果您获得原始正文响应(字符串),则必须以以下方式获得链接:
const links = body.split("href=http://my.url.com");
var activation_link = links[0].match(/\bhttp?:\/\/\S+/);
activation_link= activation_link[0].replace('"','')
cy.visit(activation_link)
删除这些将导致相同的错误。我认为问题的根源在于Cypress不喜欢我调用邮件api,然后运行Cypress命令。我不知道该怎么解决这个问题。我认为这是一个非常常见的测试,需要自动化,所以Cypress应该有某种类型的解决方案。
const links = body.split("href=http://my.url.com");
var activation_link = links[0].match(/\bhttp?:\/\/\S+/);
activation_link= activation_link[0].replace('"','')
cy.visit(activation_link)