超时等待Protractor在11秒后与页面同步

时间:2016-12-07 06:56:49

标签: protractor

我是Protractor的新手并且一直试图进行端到端测试。我已经尝试过其他受访者,但我仍然收到上述错误

我的量角器conf.js看起来像这样

directConnect: true,
framework: 'jasmine',
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 2500000,
getPageTimeout: 30000,
print: function() {}
},

spec.js看起来像这样

describe('b2-bportral standardOrder', function () {
let onlineOrderPage: OnlineOrderPage;
let loginPage: LoginPage

beforeEach(() => {
    browser.driver.manage().window().maximize();;
    loginPage = new LoginPage();
    loginPage.navigateTo();
    loginPage.setUserName("canon@gmail.com");
    loginPage.setPassword("a");
    loginPage.loginClick();
    onlineOrderPage = new OnlineOrderPage();
    onlineOrderPage.navigateTo();
    browser.waitForAngular();
});
it('Standard Order', () => {
    onlineOrderPage.setPartnerName("");

});
});

po.ts看起来像这样:

export class LoginPage {
  navigateTo() {
    return browser.get('#/login',30000);
  }
  setUserName(username:string) {
    element(by.id("username")).sendKeys(username);
  }
  setPassword(password:string) {
    element(by.id("password")).sendKeys(password);
  }
  loginClick(){
      return element(by.className("login")).click();
  }

}

export class OnlineOrderPage {
    navigateTo() {
         browser.get('url',30000);
    }
     setPartnerName(value:string){
        element(by.id('selPartnerName')).click();
        return element(by.cssContainingText('option', 'CANON MIDLE EAST')).click();
    }
}

错误:

b2-bportral standardOrder
× Standard Order
- Failed: Timed out waiting for Protractor to synchronize with the page after 11 seconds. Please see https://github.com/angular/protractor/blob/master/docs/faq.md
- Failed: Timed out waiting for Protractor to synchronize with the page after 11 seconds. Please see https://github.com/angular/protractor/blob/master/docs/faq.md
While waiting for element with locator - Locator: By(css selector, *[id="selPartnerName"])

任何人都请指导我

1 个答案:

答案 0 :(得分:1)

量角器试图加载你的页面,但它可以在完全加载之前超时。有两种可能性。首先确保为页面指定了正确的URL,并且在超时之前实际开始加载页面。

其次,您可以通过两种方式增加加载页面的超时(默认值为10):

  1. 在配置文件集getPageTimeout: 30000中增加 每browser.get()
  2. 超时
  3. 使用参数指定每个函数的超时时间 示例:browser.get("url", 30000);请注意browser.driver.get()仅使用1个参数,因此请务必使用browser.get()
  4. 此外,如果上述解决方案不适合您,您可能需要尝试为webdriver设置超时。您可以使用以下行在配置文件中进行设置:allScriptsTimeout: 30000

    所有值均以毫秒为单位

    编辑: 首先放置browser.pause(),当它暂停时查看浏览器并查看标识为selPartnerName的元素是否确实存在。 如果存在,请尝试使用此代码等待更长时间:

    var el = element(by.id('selPartnerName'));
    var EC = protractor.ExpectedConditions;
    browser.wait(EC.presenceOf(el), 30000);