javascript - 在 Protractor JS 中访问 Angular JS 指令内的元素

标签 javascript angularjs protractor

所以我有一个将用户添加到数据库的程序。单击“添加用户”时,它会调用 Angular 中的自定义指令,将 HTML 呈现到页面。在 Protractor 中,我试图编写一个测试来通过查找并填写必填字段来添加用户。

到目前为止,这有效:

it('should click the add user button', function(){
    browser.waitForAngular();
    var addUser = element(by.id('addUserDesktop'));
    browser.wait(EC.elementToBeClickable(addUser), 10000);
    addUser.click().then(function(){
        setTimeout(function(){
            expect(element(by.id('useradd')).isPresent()).toBe(true);
        },2000);
    });
});

我在其中放置了一个 setTimeout ,认为该元素对于 Protractor 来说可能加载速度不够快。

通过后我进行了这个测试:

it('should find and enter data into the required fields to add a user', function(){
    browser.driver.findElement(by.id('username')).sendKeys(username);
});

但是我收到了这个错误:

ElementNotVisibleError: element not visible

任何知道如何解决这个问题的人都已经尝试了一段时间,但它只是让我头疼!

最佳答案

protractor中,有一个内置机制来等待页面上满足特定条件。在这种情况下visibilityOf Expected Conditionbrowser.wait() 一起使用应该可以解决问题:

var EC = protractor.ExpectedConditions;

addUser.click().then(function() {
    browser.wait(EC.visbilityOf(element(by.id('useradd'))), 5000);
});

关于javascript - 在 Protractor JS 中访问 Angular JS 指令内的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34041660/

相关文章:

javascript - 在 clipboard.js 中使用多个按钮时的单独工具提示

angularjs - Protractor 在转发器数组中按模型获取元素

javascript - 如何使用 Protractor 测试 contenteditable 字段?

javascript - 期望(array_values).toBeGreaterThan(Some_Value)

javascript - 不同端口上有多个 UDP 套接字?

javascript - fancybox 中的两个标题?

javascript - 将属性 Id 设置为 uibModal

javascript - 使用 Protractor 工具使用特定元素定位器捕获图像

javascript - 使用正则表达式将字符串放在模式之后

angularjs - 在 ControllerAs AngularJS 中调用子函数