超时已过期等待IE 9上的异步脚本

时间:2013-10-15 11:47:12

标签: javascript angularjs selenium-webdriver webdriver protractor

我正在尝试在Internet Explorer 9上运行一些测试(使用Protractor) - 并且每个包含“driver.executeScript”的测试都会出现错误:超时等待异步脚本过期(警告:服务器未提供任何堆栈跟踪信息)。其他测试工作得很好。

似乎IE不理解我在函数结束时添加的超时限制(20000 ms) - 超时在~11秒后过期。

是否有任何WebdriverJS代码行使其等待异步执行?

所有测试都适用于Firefox。

代码:

#### this one works ####
    it("should display selected Date Filter", function() {
    ptor.get("data-entry?readingType=no readings after");
    var sel = ptor.findElement(protractor.By.selectedOption('data.dateFilterType'));
    expect(sel.getText()).toEqual('No readings after date');
        }, 20000);

#### this one doesn't work ####
        it("should display Selected Locations", function() {
            ptor.get("data-entry?locationIds=254,216");
            ptor.waitForAngular();
            ptor.driver.executeScript("$('#locations').show();");
            ptor.sleep(10000);
            ptor.findElements(protractor.By.selectedOption('data.locationIds')).then( function(arr) {
                expect(arr[0].getText()).toBe('Bovendijk');
                expect(arr[1].getText()).toBe('Centrum Locatie');
            });
        }, 20000);

1 个答案:

答案 0 :(得分:2)

这里有两个超时 - 单个测试的超时,以及WebDriver在浏览器中运行的每个脚本的超时。有关详细信息,请查看https://github.com/angular/protractor/blob/master/docs/debugging.md#timeouts

您可以使用allScriptsTimeout在配置中设置脚本超时。有关引入该选项的CL,请参阅https://github.com/angular/protractor/commit/e34a4abf9957d2aa73e0d8cda262e624ad15e95e