我在访问存储" 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>
答案 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
});
});