我有一个受测试的网站是使用Angular 4构建的。
除非我指定waitForAngularEnabled(false)
或ignoreSynchronization = true
,否则我的量角器测试将不会进行。
我已与开发人员和技术负责人确认该站点完全为Angular。
Developer表示,即使该网站是使用Angular开发的,也会作为“捆绑包”发送到浏览器。 (我不确定这对开发人员而言意味着什么。)
以下是我的规格文件:
describe('****** Home Page Tests', function() {
var frontpage = require("./Front_page.js");
beforeEach(function() {
browser.waitForAngularEnabled(true)
browser.get('mytesturl',50000);
frontpage.Front_page_link.click()
})
it('Should go to **** page', function(){
frontpage.Journey_button.click()
browser.getCurrentUrl().then(function(url){
expect(url).toContain('journey/get-started')
})
})
});
以下是我的配置文件:
var Jasmine2HtmlReporter = require('protractor-jasmine2-html-reporter');
exports.config = {
seleniumAddress : 'http://localhost:4444/wd/hub',
restartBrowserBetweenTests: false,
//framework: 'jasmine2',
specs : [ 'spec.js' ],
onPrepare : function() {
browser.driver.manage().window().maximize()
jasmine.getEnv().addReporter(new Jasmine2HtmlReporter({
savePath : 'target/screenshots'
}));
},
allScriptsTimeout : 50000,
jasmineNodeOpts : {
showColors : true,
defaultTimeoutInterval : 100000,
isVerbose : true
}
};
这是我得到的错误:
Failed: script timeout: result was not received in 50 seconds
答案 0 :(得分:0)
尝试使用https://angular.io/ 通过设置browser.waitForAngularEnabled(true)。 如果工作正常,则说明您已经正确配置了东西。
答案 1 :(得分:0)
对由By.css
或$
或$$
选择的元素执行的任何操作或任何导致量角器通过调用waitForAngular
函数首先等待角度稳定的操作。 “等待角度稳定”是什么意思?
此函数正在等待所有未决的HTTP查询和所有未完成的超时,并且如果找到脚本,则不允许脚本继续进行。
因此,基本上,大多数情况下,大多数时候您只能使用browser.sleep(3000)
,因为大多数超时发生在动画等中,并且大多数http查询将在3秒后完成。
但是有时超时不会在3秒内完成:例如在长轮询或使用超长超时实现的某些功能的情况下。在我们的应用程序中,我们实现了自动注销功能。登录后,该服务将检查JWT令牌的到期日期,并等待(ExpirationDate-CurrentDate),然后注销用户。可以想象,这是一个巨大的超时,超时36小时!删除它之后,一切都变得像个魅力。
不要那样做,以不同的方式实现这些功能。在您的代码中搜索setTimeout
,setInterval
,timeout
,interval
的所有出现并进行处理。