我是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"])
任何人都请指导我
答案 0 :(得分:1)
量角器试图加载你的页面,但它可以在完全加载之前超时。有两种可能性。首先确保为页面指定了正确的URL,并且在超时之前实际开始加载页面。
其次,您可以通过两种方式增加加载页面的超时(默认值为10):
getPageTimeout: 30000
中增加
每browser.get()
browser.get("url", 30000);
请注意browser.driver.get()
仅使用1个参数,因此请务必使用browser.get()
。此外,如果上述解决方案不适合您,您可能需要尝试为webdriver设置超时。您可以使用以下行在配置文件中进行设置:allScriptsTimeout: 30000
所有值均以毫秒为单位
编辑:
首先放置browser.pause()
,当它暂停时查看浏览器并查看标识为selPartnerName
的元素是否确实存在。
如果存在,请尝试使用此代码等待更长时间:
var el = element(by.id('selPartnerName'));
var EC = protractor.ExpectedConditions;
browser.wait(EC.presenceOf(el), 30000);