Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Cypress-访问从第三方获得的URL(电子邮件)_Javascript_Cypress - Fatal编程技术网

Javascript Cypress-访问从第三方获得的URL(电子邮件)

Javascript Cypress-访问从第三方获得的URL(电子邮件),javascript,cypress,Javascript,Cypress,在我的测试中,我想访问通过电子邮件发送的URL。我可以成功地将URL保存在变量中,但无法让cypress转到该URL。我一直得到下面的错误。我不完全理解cypress的“承诺式”,所以我不确定如何解决这个问题 未捕获的(承诺中的)Cypresser错误:Cypress检测到您返回 在调用一个或多个cy命令时来自命令的承诺 在这个承诺中 返回承诺的命令是: 得到 您在承诺中调用的cy命令是: cy.请求() 因为Cypress命令已经像promise一样了,您不需要这样做 把它们包装起来,或者回报

在我的测试中,我想访问通过电子邮件发送的URL。我可以成功地将URL保存在变量中,但无法让cypress转到该URL。我一直得到下面的错误。我不完全理解cypress的“承诺式”,所以我不确定如何解决这个问题

未捕获的(承诺中的)Cypresser错误:Cypress检测到您返回 在调用一个或多个cy命令时来自命令的承诺 在这个承诺中

返回承诺的命令是:

得到

您在承诺中调用的cy命令是:

cy.请求()

因为Cypress命令已经像promise一样了,您不需要这样做 把它们包装起来,或者回报你自己的承诺

Cypress将用最终的Cypress解决您的命令 命令让步


这难道不只是从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)