登录谷歌帐户时,E2E测试套件卡住了

时间:2018-04-16 18:22:19

标签: google-chrome protractor selenium-chromedriver angular5 google-account

在我的Angular5应用程序中,我有一个在量角器上运行的E2E测试套件,其中包括登录到Google帐户。最近,输入密码后,Chrome会被重定向到显示空白屏幕的https://accounts.google.de/accounts/SetSID,而不会发生任何其他情况。最终,该套件会暂停。

当我手动输入用户名和密码(在E2E环境之外)时,浏览器也会被重定向到此URL一秒钟,但随后会立即导航到https://accounts.google.com/signin/oauth/consent我允许或拒绝访问我的帐户。

看起来我需要为E2E环境修复一些Chrome设置,但是哪些以及如何?

编辑:页面本身为空白,但HTML正文包含一个脚本标记:

<script nonce>
  location.replace('https:\/\/accounts.google.com\/signin\/oauth\/consent?authuser\x3d0\x26part\x3dAJi8hAMUl_5gA4GrIozXAyYpERMmUqdSAaQS-oLzjkegEK6wmwghwqKNYFd8jKuz3WjirmqMLgnvk9FNR-hVvO0bnWthA-dCrOVWyLKXl_GYL_xVerzhfMSNGPn7wziNYoQ5nKVyaWtH67YUR-O7gwmSW0dukrSjIUpg954e1KcAiMfrCf4dKRBFd8ENTdy4U5KHphQjWKPKnqsXf0hCUob6DFaLiiyUrDq9BaBkOFdnafHz0hP99JFGDa1Anul9oWYonB8ce4z485rPHpuGYBVmioRauqBXWQ1q62oNgDuo8qhFDsGUyxUyywgKQ-veZO05WHJcmmtbL_q0bmrPHD3yNl91vwl0uiF5NdRS_kZ6oKY_bxD562yawqNQdZ1nVfAGWmaYXyXjFd6EX0He351ugpyyezOZ0zBb-5BKv7IXWu2DiD3bd_E\x26as\x3dOnTvuJ0NpqEd3bqD8MVs-g\x26auth\x3dAwanw8ZCzvMxUzucWfpIL9mB__vh3DFsXzQGdSuyMdWciXu7MY6ww1lukyPl3EJ0B4FX5A.#');
</script>

1 个答案:

答案 0 :(得分:1)

实际上可以从脚本中提取回调URL,但它需要一些插入,因为url字符串会转义特殊字符:

const returnScript = element(by.xpath('//body/script'));
browser.wait(protractor.ExpectedConditions.presenceOf(returnScript), 10000)
 .then(() => {
   returnScript.getAttribute('innerHTML')
    .then(text => {
      let callbackUrl = text
        .match(/\'.*\'/)[0]
        .slice(1, -1);
      callbackUrl = callbackUrl.replace(/\\\//g, '/');
      callbackUrl = callbackUrl.replace(/\\x3d/g, '=');
      callbackUrl = callbackUrl.replace(/\\x26/g, '&');
      // This was necessary for some reason, I assume you need to replace .de with your country domain
      callbackUrl = callbackUrl.replace(/.com/, '.de');
      console.log(callbackUrl);

      browser.driver.get(callbackUrl);
    })
})

编辑:昨天我推出同一套房时,问题就此消失了。上面的代码不是必需的。