当前位置: 首页 > 知识库问答 >
问题:

量角器浏览器。等待间歇性地阻止网站的执行

贲骏喆
2023-03-14

我正在angularjs应用程序上使用量角器4.0.14。

我们正在执行一个异步调用,使用加载栏需要 30 秒。所以我正在等待一个元素在那段时间之后出现。加载栏总是去100%,然后间歇性地卡在100%,因为浏览器.wait,但大多数时候它工作并显示我正在寻找的元素。

如果没有,它只是卡在100%,获得超时,然后继续测试。只有量角器才会发生,在浏览器上手动操作,它永远不会卡住。

it('Should wait for the end of the api call', function () {
    browser.wait(function () {
        return $('#loaded i.check').isPresent();
    }, 60000);
    expect($('#score button').isPresent()).toBe(true);
}, 61000);

我尝试使用忽略同步为true,我尝试使用隐式等待,等待预期条件“EC”,使用browser.driver.wait而不是browser.wait,睡眠,但没有任何改变问题。它有时会卡在加载栏上,阻止应用程序继续。

有什么建议吗?

编辑:不是量角器问题。我设法在常规的Chrome浏览器中手动重新创建错误。

共有3个答案

龙骏
2023-03-14

这不是docker的问题,因为我在chromium上成功地在没有量角器的情况下重新创建了这个bug。

原因是网络错误:错误网络已更改

聂溪叠
2023-03-14

尝试下面的代码。

var EC=protractor.ExpectedConditions;
var ele=$('#loaded i.check')

it('Should wait for the end of the api call', function () {
 browser.wait(EC.visibilityOf(ele),60000,"NOT VISIBLE");
 expect($('#score button').isPresent()).toBe(true);
});
仲霍英
2023-03-14

你可以做得更简单。您可以等待元素中的“100%”文本。这里有一个代码:

< code >返回browser . wait(expected conditions . texttobepresentinelement(element,' 100% '),60000);

您要做的唯一一件事是用文本应该可见的对象替换<code>元素

顺便说一句,由于缺乏柴作为promise的库,您的预期断言不起作用。类似问题

 类似资料:
  • 我试图遵循量角器官方网站上的量角器教程,但我甚至无法完成步骤0。 我在用量角器 之后,我一直在遵循教程的第0步。我有配置。js文件和test-spec.js文件如下: 配置js公司 测试规范js 当我运行protector

  • 我在用量角器做测试。99%的情况下,不需要实际查看浏览器,测试需要很长时间,而我们感兴趣的只是最终结果。有没有一种方法可以隐藏为测试而打开的浏览器(例如在后台运行)?

  • 问题内容: 在服务器回答请求之前,浏览器需要等待多长时间才能显示错误?这次可以无限吗? 问题答案: 如果使用的是jQuery $ .ajax调用,则可以设置timeout属性以控制请求以超时状态返回之前的时间。超时设置为毫秒,因此只需将其设置为很高的值即可。您也可以将其设置为0(表示“无限”),但我认为您应该设置一个较高的值。 注意:“无限制” 实际上是默认设置,但大多数浏览器都有默认超时值。 当

  • 我想用量角器和BrowserStack运行测试。我跟踪了这个帖子,我背后的一个代理。我已安装browserstack local,并使用以下命令运行它: 一切似乎都起作用了,因为我有这样的信息: 谢谢

  • 问题内容: 这个问题是面向jQuery的,但不一定是排他的。 简短的问题: 同步ajax调用会阻止正常按钮被单击吗? 我的测试表明这没有发生,但也许其他浏览器出了问题。 长的问题: 在我询问的另一个问题中,如何阻止ajax调用(我希望它阻止),这些家伙说浏览器在某些情况下会阻止。 实际上,甚至jQuery 的文档都说: 我正在尝试: 1.了解发生这种情况的方式/原因。 2.评估发生这种情况的可能性