等待元素在量角器中可见

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了等待元素在量角器中可见相关的知识,希望对你有一定的参考价值。

我花了几天时间尝试制作Protractor点击元素,这些元素在点击按钮后出现在页面上。但大多数时候我都有这个错误:

  Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
  Stack:
    Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
        at ontimeout (timers.js:498:11)
        at tryOnTimeout (timers.js:323:5)
        at Timer.listOnTimeout (timers.js:290:5)

到目前为止我尝试了几件事:

  • browser.waitForAngular阻止了剧本,尽管我可以看到我在第二页。
  • 多个browser.driver.wait实现,如下所示: browser.driver.wait(EC.visibilityOf($('li.unsigned')),10000).then(()=> element($('li.unsigned'))。click();)
  • 你可以在上面看到protractor.ExpectedConditions,但效果不佳。
  • 我还在onPrepare脚本中添加了一个选项来管理implicitWait,如下所示: onPrepare:function()browser.manage()。timeouts()。implicitlyWait(15000);

我让它工作的唯一方法是在尝试单击元素之前删除我尝试的所有内容并使用browser.sleep(10000)。

如果有人知道可能导致问题的原因,或者我还能尝试什么,那么欢迎你!

答案

即使我有类似的问题,我在配置中添加了这些行

 jasmineNodeOpts: 
// Default time to wait in ms before a test fails.
   defaultTimeoutInterval: 250000
,
allScriptsTimeout: 180000

在我的规格中

var originalTimeout;  
beforeEach(function () 
originalTimeout = jasmine.defaultTimeoutInterval;
jasmine.defaultTimeoutInterval = 50000;
);

it("texttobe", function()


afterEach(function () 
jasmine.defaultTimeoutInterval = originalTimeout;
);
另一答案

所以,在使用我的代码玩了一下之后,我得到它只需要加入onPrepare中的protractor.conf.js

  onPrepare: function () 
    browser.manage().timeouts().implicitlyWait(30000);
    require('ts-node').register(
      project: './tsconfig.e2e.json'
    );
  

通过做一个browser.driver.findElement(by.css(element)).then()

使用implicitWait的ExpectedConditions会产生导致超时的问题,但我不知道原因。

以上是关于等待元素在量角器中可见的主要内容,如果未能解决你的问题,请参考以下文章

当 Angular 不可用时,如何等到 Protractor 可见元素?

如何检查列表中的任何一个元素是不是显示在量角器中

如何等待元素可见

量角器 - 其他元素将收到点击

带角覆盖的量角器/硒,其他元素会收到点击

等待多个元素变得不可见 Selenium Java