2016-10-04 10 views
2

我遇到了一个问题,我之前运行的一个测试用例,我知道它正在运行,现在当它执行时会无限期地卡住。每次测试点击特定元素时都会发生这种情况。测试只是挂起,无法继续执行脚本。除超时错误外,不会发生错误。当我运行测试我拿到常规提示:如何解决量角器测试无限期挂起的问题?

[11:58:20] I/direct - Using ChromeDriver directly... 
[11:58:20] I/launcher - Running 1 instances of WebDriver 
Started 
A Jasmine spec timed out. Resetting the Webdriver Control Flow. 
F 

Failures: 
1) clicks menu buttons 
Message: 
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 Timer.listOnTimeout (timers.js:92:15) 

1 spec, 1 failure 
Finished in 3000.147 seconds 
[12:48:47] I/launcher - 0 instance(s) of Webdriver still running 
[12:48:47] I/launcher - chrome #01 failed 1 test(s) 
[12:48:47] I/launcher - overall: 1 failed spec(s) 
[12:48:47] E/launcher - Process exited with error code 1 

然后,它只是挂在那里,直到它达到我设定的超时时间。以下是配置的副本和我正在使用的测试脚本的一部分。

config.js

exports.config = { 
    seleniumAddress: 'http://localhost:4444/wd/hub', 
    directConnect: true, 
    //getPageTimeout: timeout_in_millis 
    // Capabilities to be passed to the webdriver instance. 
    capabilities: { 
    'browserName': 'chrome' 
    //'browserName': 'firefox' 

    }, 

    //suites:{}, 

    specs: ['basic_testing.js'], 

    allScriptsTimeout: 3000000, 

    //framework: 'jasmine2', 
    onPrepare: function() { 
       browser.driver.manage().window().maximize(); 
    var jasmineReporters = require('jasmine-reporters'); 
    jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter({ 
     consolidateAll: true, 
     savePath: 'testresults', 
     filePrefix: new Date().toJSON().substring(0,10).replace(/-/g , "") + '_xmloutput' 
    })) 
}, 
    //Options to be passed to Jasmine. 
    jasmineNodeOpts: { 
     defaultTimeoutInterval: 3000000 
    } 
}; 

basic_testing.js

describe('menu page', function() 
{ 
    it('clicks menu buttons', function() 
    { 
     element(by.id("nav-group-ServiceOrders")).click(); 

     element(by.id("nav-item-Dashboard")).click(); 

     //This element is clicked but then the test hangs here 
     element(by.id("nav-item-OrdersConsole")).click(); 

     element(by.id("nav-item-PersonnelConsole")).click(); 

     element(by.id("nav-item-PriorityPoints")).click(); 

    }); 
}); 
+1

你可以在问题中包含你的规格文件和配置文件。鉴于目前的状况,很难确定根本原因和它的含义太模糊 – AdityaReddy

+0

@J。 Chang在硒挂机时会得到什么?它显示任何错误或任何其他信息? – user1207289

+0

@AdityaReddy我添加了配置和测试用例 –

回答

1

如果你已经探索Timeouts和仍然面临的问题,那么 使用browser.executeScript('window.stop();');如果点击第一个元素后所生成的页面加载你的第二个要点击的元素,但要花时间加载页面中的所有元素,然后停止进一步加载元素并继续单击第二个元素。你的代码将如下所示。

var EC = protractor.ExpectedConditions; 
1stElement.click(); 
browser.wait(EC.presenceOf(2ndElement), 5000); 
browser.wait(EC.visibilityOf(2ndElement), 5000); 
browser.executeScript('window.stop();'); 
2ndElement.click();