量角器 - 给予"无法找到元素的可测性"访问元素

时间:2016-11-07 20:29:21

标签: javascript angularjs testing jasmine protractor

我在访问存储" elements.all"的返回值的变量时遇到了与Protractor的问题。我对Protractor相当新,所以我不确定如何通过自定义属性选择元素。幸运的是,当我在另一篇文章中发布question时,我收到了一个建议。我被建议尝试 - " element.all(by.css(' [mycustom-id]')); "。但是我不确定这个陈述是否有效,因为我得到了" 无法找到元素的可测性"错误。我也可能错误地迭代了对象。如果你们中的任何人都能指出我的错误,我感激不尽。谢谢。

Spec.JS

var settings = require(__dirname + '/setting.json');
describe('Protractor Demo App', function() { 
    var target = element.all(by.css('[mycustom-id]')); 

    beforeEach(function() {
       browser.get(settings.url);
    });     

    it('Test mouseover', function() {       

       // This does not work
       target.each(function(item){
          //Do some stuff here
       });     

       // This does not work either
       target.count().then(function(x){
         console.log("Total--" + x);
       });
    });

});

的index.html

<div>
    <a mycustom-id="123" href=''>HELLO1</a>
    <a mycustom-id="211" href=''>HELLO2</a>
</div>

2 个答案:

答案 0 :(得分:1)

我收到此错误是因为我需要在配置文件中将useAllAngular2AppRoots设置为true。因此,如果有人遇到类似问题,请确保将useAllAngular2AppRoots设置为True。

答案 1 :(得分:0)

将事物置于Jasmine函数之外,即it()之外,beforeAll()之外并不是一个好习惯.Protractor使用那些Jasmine函数来管理控制流。

所以我猜它正试图在应该之前创建那些webElements方式。将元素定位器移动到it()块内。

it('Test mouseover', function() {       
   var target = element.all(by.css('[mycustom-id]')); 
   target.each(function(item){
      //Do some stuff here
   });
});