我正在经历一个将我的Selenium Hub/Nodes升级到3.3版的过程.一切正常,但我想确保我有最佳配置...问题是我找不到任何地方的Hub/Node属性的完整列表.
我看了看:
这些文档仅通过示例配置列出了一些属性,但它们中没有一个看起来像一个完整的列表,更重要的是它们都没有实际说明这些属性的作用. 有关Selenium Hub/Nodes的配置属性的完整列表的文档在哪里?
在我们的应用程序中,我们有一些问题需要回答,这将更新进度条.目前,我有一个等待HTML属性更改的功能,适用于大多数事情,但是对于进度条来说有点挑剔,因为当条形从0 - 10%等移动时动画发生超过1-2秒.所以失败我目前面临的是:Expected 11 to be within range 12, 14.
代码:
Util.prototype.waitForAttributeChange = function (el, attr, time) {
var timeout = time || 0,
currentAttr;
el.getAttribute(attr).then(function (val) {
currentAttr = val;
return currentAttr;
}).then(function () {
return browser.wait(function () {
return el.getAttribute(attr).then(function (val) {
return val !== currentAttr;
});
}, timeout);
});
};
Run Code Online (Sandbox Code Playgroud)
用法:
Util.waitForAttributeChange(Page.progressBar(), 'style', 10000).then(function () {
expect(Page.getProgressBarValue()).toBeWithinRange(12, 14);
};
Run Code Online (Sandbox Code Playgroud)
问题:抓取的值不是进度条的最终结果,当它抓取它时它仍在移动(因为我的函数等待属性更改,此时属性确实发生了变化)
问题:还有其他方法可以等待动画,特别是等待它完成吗?和/或这可能不使用browser.sleep()?
抱歉,如果这个问题更适合Stack Exchange程序员,我已经在两个网站上发布了这个问题,因为我认为它已经出现了问题.
问题: E2E自动化测试是否有任何有价值的指标?(收集周围的数据是否有意义?)
上下文:例如,当我编写单元测试时,我实现了一个测试覆盖包,其中包含了%的类,触及的方法等等...
我遇到的几点:
有任何想法吗?如果重要,我在Angular应用程序上使用Protractor.
背景:我使用 Jasmine 作为 Protractor 的测试框架,我一直在使用jasmine 规范报告器进行报告。昨天,我稍微更改了jasmineNodeOpts量角器 conf.js 中的参数以包括print()函数 ie
jasmineNodeOpts: {\n showColors: true,\n defaultTimeoutInterval: 120000,\n includeStackTrace : true,\n isVerbose : true,\n print: function () {}\n},\nRun Code Online (Sandbox Code Playgroud)\n\n我添加了这个打印功能,因为我了解到它会删除.每个报告之前的内容。例如,我的测试报告曾经返回:
. \xe2\x9c\x93 should display a profile question about IT loads\n. \xe2\x9c\x93 checks the width of the progress bar\n. \xe2\x9c\x93 selects an option from the radio buttons and updates the progress bar\nRun Code Online (Sandbox Code Playgroud)\n\n现在那些前导点被删除了。然而,现在我的最终报告也略有变化:
\n\n14 specs, 2 failures Finished in 45.473 seconds …Run Code Online (Sandbox Code Playgroud) 与此问题相关:如何使用Protractor创建条件测试用例? - 我很好奇这些场景是否有合法(记录)的答案,因为我无法得到一个直接的答案.
虽然ignore在链接问题中发布的解决方案有效,但在风格上我不是它的粉丝.乍一看,它看起来像是在忽略/跳过规范.
另外,我在Gitter问了这个问题- 下面的代码是不好的做法?
if(questionAnswer == "Yes") {
it('should display another question', function() {
// code
});
}
Run Code Online (Sandbox Code Playgroud)
我从量角器团队的人那里收到的Gitter答案相当含糊:
这可能导致片状测试......我认为没有任何东西可以说它不是不好的做法.如果它适合你,那么运行它.
我对这个答案并不满意,因为他开始说"可能是片状的......"这对我来说听起来并不稳定.我看到的唯一选择是在规范内部创建条件正常,并创建一个任意断言来捕获else场景,即:
it('should display another question', function() {
if(questionAnswer == "Yes") {
expect(question2.isDisplayed()).toBe(true);
}
else {
expect(true).toBe(true);
}
});
Run Code Online (Sandbox Code Playgroud)
但是当我只需要50%的时间时,我会自动添加一个额外的测试用例.我知道这是一个小问题,但它确实困扰我.
上面的代码是我目前面临的情况 - 如果最后一个规范回答"是",我需要为下一个问题运行一个额外的规范.如果没有,那就是我测试的结束.是否真的没有正式的方法来有条件地运行Jasmine/Protractor中的规范?
由于我们的应用程序在Node版本<6.9上运行,我在升级到Protractor v5+并升级到的曲线上有点落后chromedriver 2.28.一旦我这样做了,我注意到了一些我在测试中不想要的变化.
第一个问题是弹出窗口显示
Chrome现在由自动化软件控制
除了我不想看这个,我担心它可能会干扰页面交互(即点击导航栏中的链接).
第二个问题是每次我的测试登录时密码管理器都会出现,导致弹出窗口
您是否希望Google Chrome保存此网站的密码?
我该如何防止这种情况发生?
protractor ×6
jasmine ×2
angularjs ×1
e2e-testing ×1
html ×1
javascript ×1
metrics ×1
selenium ×1
webdriver ×1