waitForAngularEnable(true)不起作用-ScriptTimeoutError:脚本超时:未在

时间:2019-06-06 12:35:53

标签: angular typescript protractor cucumber

起始页面角度。通过单击一个按钮将转到无角登录页面。登录后,其余页面都是有角的。

我正在使用 async / await

  • 在onPrepare中包含waitForAngularEnable true ),但无效。
  • 尝试在登录后添加waitForAngularEnable true ),但这没有 工作。
  • 尝试增加timeOut,但效果也不佳。
  • 仅在waitForAngularEnable false )时有效。我无法使用量角器waiForAngular中的内置功能,该功能要等到角度加载后才能使用。当前使用waitForAngularEnable(false)我正在使用browser.driver.wait(until.elementsLocated(by.id(value)),30000)手动处理它;或等待browser.wait(ExpectedConditions.presenceOf(ele),30000);。这样就可以了。
  

版本-
“量角器”:“ ^ 5.4.2”
“节点”:10.15.3
  “ target”:“ es6”
“ cucumber”:“ ^ 5.1.0”,
  “ cucumber-html-reporter”:“ ^ 5.0.0”
ScriptTimeoutError:脚本   超时:30秒内未收到结果
           (会话信息:chrome = 74.0.3729.169)
           (驱动程序信息:chromedriver = 74.0.3729.6
(255758eccf3d244491b8a1317aa76e1ce10d57e9-refs / branch-heads / 3729 @ {#29})),平台= Windows   NT 10.0.17763 x86_64)              在Object.checkLegacyResponse
(C:\ Automation \ General \ node_modules \ selenium-webdriver \ lib \ error.js:546:15)              在parseHttpResponse(C:\ Automation \ General \ node_modules \ selenium-webdriver \ lib \ http.js:509:13)
             在doSend.then.response(C:\ Automation \ General \ node_modules \ selenium-webdriver \ lib \ http.js:441:30)
             在process._tickCallback(内部/进程/next_tick.js:68:7)          来自:任务:Protractor.waitForAngular()-定位器:By(xpath,// span [@ class ='title__subtext'])

3 个答案:

答案 0 :(得分:0)

您在做什么(根据我对问题的理解)

  • 打开角度页面
  • 登录
  • 您已重定向到非角度页面(此时量角器尚未响应)
  • 您尝试使用await browser.waitForAngularEnabled(false);(但是量角器没有响应,因为您位于非角度页面上)

您应该做什么

  • 打开角度页面
  • 输入凭据
  • 点击提交按钮之前,请运行await browser.waitForAngularEnabled(false);
  • 您已重定向到非角度页面(此时量角器可以与其通信)
  • 做任何想做的事

简单来说,当您仍在角度页面上时,必须禁用等待角度

P.S。反之亦然。如果您要从非角度页面导航回到角度页面,则仅当您登陆角度页面时才必须启用该功能

答案 1 :(得分:0)

可以在同一测试中多次使用waitForAngularEnabled,但是需要明确添加browser.get。您可以使用以下内容:

// do things on your Angular application

waitForAngularEnabled(false)

// do things on non-angular page

waitForAngularEnabled(true)
browser.get('/home') // this is a page from your Angular application

browser.get函数将一直阻塞,直到加载“ Angular”页面为止。

答案 2 :(得分:-1)

对于Angular应用,量角器将等待Angular Zone稳定下来。这意味着长时间运行的异步操作将阻止您的测试继续进行。要解决此问题,请在“ Angular Zone”之外运行以下任务。

可能需要将此超时设置为补丁,直到在应用程序级别解决该问题为止

allScriptsTimeout: 60000

找到了一篇很好的文章: https://valor-software.com/articles/testing-with-protractor-how-to-fix-synchronization-issues.html