首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Protractor中的脚本超时

Protractor中的脚本超时
EN

Stack Exchange QA用户
提问于 2020-07-22 09:51:10
回答 2查看 1.7K关注 0票数 1

我的当前场景是:用户键入用户名、密码,然后单击登录按钮。然后,下一个屏幕显示一个列表框,其中包含要登录的Stores。量角器加载此列表框,但未在其上找到任何元素。有时,当我单击这个列表中的任何元素时,我会收到一个错误:

堆栈: ScriptTimeoutError:脚本超时(会话信息: chrome=84.0.4147.89) (驱动程序信息: chromedriver=84.0.4147.30 platform=Windows NT 10.0.18362 x86_64)

这是我的规范文件

代码语言:javascript
复制
describe('Stock Take Review', function () {
it('should do user login', function () {     

    browser.get('myurl');
    browser.driver.manage().window().maximize();
    browser.sleep(1000);
    element(by.id("mat-input-0")).sendKeys('user');
    element(by.id('mat-input-1')).sendKeys('Pwd');
    element(by.css('.full-width')).click();///////click on login       
    browser.sleep(1000);       

);/这里,列表框列出了用户应该选择的所有存储区。

代码语言:javascript
复制
it('should select a shop', async function () {  
    let EC = browser.ExpectedConditions;
    let elm =  element(by.css('.mat-list-item:nth-child(1) .center'));        
    browser.wait(EC.elementToBeClickable(element(elm)), 150000);          
    await elm.click(); // select Koge store         
    browser.sleep(2000);
    await element(by.css('.mat-fab > .mat-button-wrapper')).click(); // click on the play button
    browser.sleep(2000);        
});

下面是配置文件

代码语言:javascript
复制
exports.config = {
  directConnect: true,

  // Capabilities to be passed to the webdriver instance.
  capabilities: {
    "browserName": 'chrome',
        chromeOptions: {     
          args: ['incognito'],


        mobileEmulation: {
            "device": 'Zebra TC20',
            "deviceMetrics": {
                "width": 340,
                "height": 440,
                "pixelRatio": 3.0
            }
        }
    }
},

   // Framework to use. Jasmine is recommended.
   framework: 'jasmine',
 
    specs: ['../tests/StockTake_Review.js'],
    

  // Options to be passed to Jasmine.
  jasmineNodeOpts: {
    defaultTimeoutInterval: 120000
  },

任何帮助都是非常感谢的!

EN

回答 2

Stack Exchange QA用户

发布于 2020-07-22 15:14:12

在您的配置文件中有defaultTimeoutInterval: 120000 ,

你在等待150000秒的时间

我认为,元素没有被定位,系统试图在150000毫厘内找到它,但是在120000抛出超时错误之后。

缩短显式等待时间

代码语言:javascript
复制
 browser.wait(EC.elementToBeClickable(element(elm)), 10000);

阅读修复程序后进行更新:

还读取量角器超时:

https://www.protractortest.org/#/timeouts

摘要:

  1. 如果您使用的是非角度的webapp,那么使用browser.waitForAngularEnabled(false);不要使用忽略同步
  2. 添加allScriptsTimeout: 1100000以避免脚本超时(如果脚本太长)
  3. 使用getPageTimeout,如果页面加载时间超过10秒(而且只有在您的情况下接受此操作时,否则将是产品中的一个错误)。
票数 1
EN

Stack Exchange QA用户

发布于 2020-07-23 07:13:13

我找到了一个解决办法:在我添加的配置文件上: allScriptsTimeout: 1100000,getPageTimeout: 600000,

在spec文件上,对于失败的函数,我添加了: browser.ignoreSynchronization = true;

票数 1
EN
页面原文内容由Stack Exchange QA提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://sqa.stackexchange.com/questions/45312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档