点击新鲜数据后页面刷新时的量角器e2e

时间:2015-10-09 09:18:17

标签: javascript selenium-webdriver jasmine protractor

我是一个相当新的量角器e2e测试。测试页面是一个非角度(淘汰)页面。测试用例如下

页面有一个带有默认数据的kendo网格加载。但是当单击一个复选框时,它会加载一些其他数据。

我想在网格重新加载新数据时测试场景。

browser.wait(element(by.id('some-element')).isPresent)不合适,因为此元素在具有默认数据时已存在。在复选框单击后,我使用browser.driver.sleep(2000)等待页面重新加载。但我相信这种明确的等待并不是一个好主意,任何人都可以帮忙吗?在这种情况下建议的任何模式。任何帮助都非常感谢

2 个答案:

答案 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);