索引超出范围。尝试访问index:1处的元素,但只有1个元素与locator By匹配(xpath,// * [@ id =“testInstanceScan”])

时间:2017-11-29 05:40:51

标签: node.js jasmine protractor

我在页面上有多个具有相同xpath和相同ID /名称的元素,页面上有两个字段,具有相同的定位器我试图在所需位置输入值,代码如下

element.all(by.xpath('//*[@id="testInstanceScan"]')).get(1).sendKeys('Vkumar');

但我遇到了错误消息:

  

失败:索引越界。试图访问index:1处的元素,但是   只有一个元素匹配定位器By(xpath,   // * [@ id =“testInstanceScan”])

如果我使用element.all('#testInstanceScan').get(1).sendKeys('Vkumar');

我遇到了错误

  

失败:无效的定位器Stack:TypeError:无效的定位器

尝试element.all(by.css('#testInstanceScan')).get(0).sendKeys('Vkumar'); 但它不是这个价值的理想之地。 使用此第0个intdex将值输入到先前的字段中。

1 个答案:

答案 0 :(得分:0)

如果您需要具有唯一ID的单个元素,则无需使用element.all(),但element()

您的代码应为

element(by.css('#testInstanceScan')).sendKeys('Vkumar');

甚至更短:

$('#testInstanceScan').sendKeys('Vkumar');

另请查看Protractor Homepage

上的API

要证明,只有一个元素可以尝试:

element.all(by.css('#testInstanceScan')).count().then(function(numberOfElems){
    console.log('For this ID I found '+numberOfElems+' elements.');
})