在浏览器生成后,我在HTML中看到了这一点:
<!-- ngRepeat: (promptId, q) in questions -->
我想获得第一个元素,所以我使用:
it('add new comment thread', function () {
element.all(by.repeater('(promptId, q) in questions')).first().click();
});
但是我收到了一个错误:
失败:索引越界。试图访问index:0处的元素,但是 只有0个元素匹配定位器by.repeater(“(promptId, q)问题“)
这里至少有一个子元素,所以我使用by.repeater不正确吗?
答案 0 :(得分:1)
一般来说,如果没有看到针对特定应用的特定测试中实际发生的情况,很难回答这样的问题。
首先,请注意,即使没有转发器元素,此评论也会存在。
这可能是一个&#34;计时问题&#34;,等待元素的存在有助于:
var prompt = element.all(by.repeater('(promptId, q) in questions')).first();
var EC = protractor.ExpectedConditions;
browser.wait(EC.presenceOf(prompt), 5000);
prompt.click();
// TODO: your expectation here
当然,当您尝试单击元素并且转发器实际上包含/提供数据时,请确保您位于预期的页面上。