2016-07-25 64 views
2

我正在写一个测试protractor,我的目的是点击一个元素,并检查它是否有特定的class。问题是,我使用click(),其次是then(),但我收到以下错误:Click()然后()不起作用 - 量角器

Cannot read property 'getAttribute' of null 

问题位于下面的代码块:

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

你有一个关于如何解决这个问题的想法?提前感谢您的回复!!

回答

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