如何为多个场景/功能中的仅一个场景/功能定义前标签

时间:2019-07-03 14:20:47

标签: annotations puppeteer

对于特定情况,我需要在标签前运行一个。怎么做?

因此,在一种情况下,我需要设置一些请求(例如1号用户)。我有一个基于提供的用户名和密码从系统中获取的令牌。这一切都在挂钩文件中的before标签中设置-代码1

然后,我需要在挂接文件中运行另一个before标记,以获取作为2号不同用户的令牌并完成此任务。代码2

我无法区分它,或者我的系统仍然获得新的令牌,就像永远是1号用户。

代码1-每次运行

Before(async () => {
  const page = World.page;
  const token = retrieveToken();
  console.log('Using environment url: ' + EnvironmentVariables.URL);
  await page.goto(EnvironmentVariables.URL + `/?access_token=${token}&expires_in=3600&token_type=bearer`);
  await page.waitForSelector(SelectorUtils.nameSelector(NavigationComponent.searchClientInputName));
  await waitForSpinnerToEnd();
});

代码2-在这里,我尝试使用带有场景名称的注释,但没有任何效果。我得到令牌,但是当我查看控制台时,我看到了代码1的登录详细信息

Before({tags: '@SubmitSRForReviewFinish'}, async () => {
  const page = World.page;
  const token = retrieveTokenLogin();
  console.log('Using environment url: ' + EnvironmentVariables.URL);
  await page.goto(EnvironmentVariables.URL + `/?access_token=${token}&expires_in=3600&token_type=bearer`);
  await page.waitForSelector(SelectorUtils.nameSelector(NavigationComponent.searchClientInputName));
  await waitForSpinnerToEnd();
});

我仅需要针对特定​​情况才能在代码之前运行。怎么做?如何以其他用户身份登录另一个方案?

1 个答案:

答案 0 :(得分:0)

已解决:我自己

解决方案:带有批注的此解决方案有效,但您需要记住,如果在开始时有一些beforeAll标记可在其中设置窗口和其他属性,则只需将其更改为仅在标记导致浏览器窗口仍然打开之前不管它仍然具有旧的价值