Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法检索链接&;点击它-量角器_Javascript_Automation_Jasmine_Protractor - Fatal编程技术网

Javascript 无法检索链接&;点击它-量角器

Javascript 无法检索链接&;点击它-量角器,javascript,automation,jasmine,protractor,Javascript,Automation,Jasmine,Protractor,我正在尝试将网页的所有Web链接放在一个数组中&我想单击文本匹配的链接,因为url链接在网页中的位置不固定。 我的以下代码因错误而失败: 失败:索引超出范围。试图访问索引为15的元素,但只有0个元素与定位器匹配(css选择器、.entity.element.a) 您可以使用.linktext(“Xtreme Testing-explorers 12345”)或.partialLinkText(“Xtreme Testing-explorers 12345”)或.cssContainingText

我正在尝试将网页的所有Web链接放在一个数组中&我想单击文本匹配的链接,因为url链接在网页中的位置不固定。 我的以下代码因错误而失败:

失败:索引超出范围。试图访问索引为15的元素,但只有0个元素与定位器匹配(css选择器、.entity.element.a)


您可以使用.linktext(“Xtreme Testing-explorers 12345”)或.partialLinkText(“Xtreme Testing-explorers 12345”)或.cssContainingText(“.entity.element.a”,“Xtreme Testing-explorers 12345”)而不是使用.css()

其他替代解决方案:

var result_links =element.all(by.css('.entity.element.a')); 
result_links.getText().then(function(linkList){
    var index=text.indexOf("Xtreme Testing -explorers 12345");
    result_links.get(index).click();  
});


如果不强制使用数组方法,那么如上所述,您可以使用linktext或partiallinktext,它应该可以工作。 或者,您也可以尝试indexOf方法,即

var result_links =element.all(by.css('.entity.element.a'));  
    for (var i=0;i<22;i++){
        result_links.get(i).getText().then(function(text){
        console.log("The fetched links are "+text);
        var index=text.indexOf("Xtreme Testing -explorers 12345");
        result_links.get(index).click();       
        })
    }
var result\u links=element.all(by.css('.entity.element.a');

for(var i=0;这是有帮助的,但我的方法有什么问题?是if条件吗?由于javascript的异步行为,您不能在getText()内的for循环中使用变量
i
。因此,您必须实现闭包来访问
getText()内变量
i
的值
promise。上述代码无效。您需要将
result\u links.get(i).getText()
更改为
result\u links.getText()
var result_links =element.all(by.css('.entity.element.a')); 
result_links.getText().then(function(linkList){
    var index=text.indexOf("Xtreme Testing -explorers 12345");
    result_links.get(index).click();  
});
var result_links =element.all(by.css('.entity.element.a')); 
result_links.filter(function(link){
  return link.getText().then(function(linkText){
       return linkText == "Xtreme Testing -explorers 12345";
  });
}).first().click();
var result_links =element.all(by.css('.entity.element.a'));  
    for (var i=0;i<22;i++){
        result_links.get(i).getText().then(function(text){
        console.log("The fetched links are "+text);
        var index=text.indexOf("Xtreme Testing -explorers 12345");
        result_links.get(index).click();       
        })
    }