javascript - Click() 和 then() 不起作用 - Protractor

标签 javascript jasmine protractor end-to-end

我正在使用 Protractor 编写测试,我的目标是单击一个元素并检查它是否具有特定的。问题是我使用 click(),然后使用 then(),但出现以下错误:

Cannot read property 'getAttribute' of null

问题位于以下代码块中:

element(by.css('#region1 polygon:first-child')).click()
    .then(function(selected){
        expect(selected.getAttribute('class')).toContain('highlighted');
    });

您知道如何解决这个问题吗?预先感谢您的回复!!

最佳答案

click() 回调没有元素本身作为参数。换句话说,您的情况下的 selected 不是一个元素。

相反,只要一步步做,让Control Flow队列完成这项工作:

var elm = element(by.css('#region1 polygon:first-child'));

elm.click();
expect(elm.getAttribute('class')).toContain('highlighted');

请注意,toContain() 并不是应用于 class 属性值的最佳匹配器。例如,如果元素具有 not-highlighted 类,则此测试将通过。更好的方法是引入自定义 toHaveClass 匹配器,请参阅:

关于javascript - Click() 和 then() 不起作用 - Protractor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38569269/

相关文章:

javascript - 我如何响应 React 中自动调整大小的 DOM 元素的宽度?

javascript - Angular Directive(指令)不应用样式

javascript - 使用 Mailgun 和 Node.js 批量发送电子邮件

angular - 空注入(inject)器错误 : no provider for FormBuilder (I'm importing ReactiveFormsModule)

node.js - Jasmine 测试 Angular 2 和 Node 不起作用

node.js - multiCapability 函数在 Protractor 中引发错误

javascript - 通过用户 ID 跟踪用户登录

javascript - 在测试中执行函数 n 次并检查 jasmine 异步代码中的每个结果的智能方法

javascript - Protractor 链式元素困惑

javascript - 有条件地解决 promise