我是一个相当新的量角器e2e测试。测试页面是一个非角度(淘汰)页面。测试用例如下
页面有一个带有默认数据的kendo网格加载。但是当单击一个复选框时,它会加载一些其他数据。
我想在网格重新加载新数据时测试场景。
browser.wait(element(by.id('some-element')).isPresent)
不合适,因为此元素在具有默认数据时已存在。在复选框单击后,我使用browser.driver.sleep(2000)
等待页面重新加载。但我相信这种明确的等待并不是一个好主意,任何人都可以帮忙吗?在这种情况下建议的任何模式。任何帮助都非常感谢
答案 0 :(得分:3)
由于在网格中加载了新数据,我们可以做的是找到网格中的现有行,单击复选框并检查先前定位的行现在是否已经过时#34; stale" :
var EC = protractor.ExpectedConditions;
var existingRow = element(by.css("#mygrid tr"));
checkbox.click();
browser.wait(EC.stalenessOf(existingRow), 5000);
另一种方法可能是等待网格中的行数改变:
element.all(by.css("#mygrid tr")).count().then(function (countBefore) {
checkbox.click();
browser.wait(function () {
return element.all(by.css("#mygrid tr")).count().then(function (countAfter) {
return countBefore !== countAfter;
});
}, 5000);
});
答案 1 :(得分:0)
抱歉,我忘了你说这是非角度的页面。
所以有一组不同的等待,基本上直接从webdriver继承: https://github.com/sakshisingla/Protractor-Non-Angular-Tests/wiki/Creating-test-scripts-using-Protractor-for-non-angular-application: 所以这样的事情应该有效:
browser.driver.wait(function() {
return browser.driver.findElement(by.id('some-element'))
.then(function(elem) {
<Your test code>
return true;
});
}, 2000);