单击()然后()不起作用 - 量角器

时间:2016-07-25 13:36:19

标签: javascript jasmine protractor end-to-end

我正在使用protractor编写测试,我的目标是单击一个元素并检查它是否具有特定的class。问题是我使用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');
    });

您对如何解决此问题有所了解吗?提前感谢您的回复!!

1 个答案:

答案 0 :(得分:3)

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匹配器,请参阅: