javascript - 在函数中添加两个参数到 "then"Protractor

标签 javascript angularjs unit-testing protractor end-to-end

很明显。我有一个包含一些链接的数组,我想构建一个循环来尝试所有链接,但问题是链接始终为 3。这意味着它读取了我数组中的最后一个数字。为什么?我该如何解决?

var categories = ['1','2','3'];
for( var i = 0; i < categories.length; i++ ) {
    var link = '/'+categories[i];
    browser.get(link);
    browser.sleep(2000);
    browser.driver.getCurrentUrl().then( function(url) {
        expect(url).toMatch(link);
    });
}

我有 div 列表,我想从中随机读取信息。所以我做了以下内容

chosenOffer         = Math.floor( (Math.random() * count ) + 1);
offer               = element.all( by.className('offer')).get( chosenOffer );

但它总是显示错误信息 chosenOffer object...

最佳答案

这是一个经典的闭包问题,详细描述如下:

在您的情况下,只需让 expect() 解决 promise :

var categories = ['1','2','3'];

for (var i = 0; i < categories.length; i++) {
    var link = '/' + categories[i];
    browser.get(link);
    browser.sleep(2000);

    expect(browser.driver.getCurrentUrl()).toMatch(link);
}

关于javascript - 在函数中添加两个参数到 "then"Protractor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27946179/

相关文章:

unit-testing - 在测试 API 的包装器时,我的单元测试是否应该直接接触 API?

javascript - 使用 parsley.js 实现强密码策略

javascript - 在 nodejs 中保持 SSH 连接

javascript - 如何在Ajax中添加DIV标签

javascript - 元素和属性指令中的隔离范围相同

python - 是否有用于 Python 的类似 Spock 的测试库

javascript - 在 React 中获取子属性

angularjs - 错误 : Expected a spy, 但得到了函数

css - 即使在页面刷新或从应用程序注销后也禁用该按钮

unit-testing - Mocking FacesContext