Javascript 无法检索链接&;点击它-量角器
我正在尝试将网页的所有Web链接放在一个数组中&我想单击文本匹配的链接,因为url链接在网页中的位置不固定。 我的以下代码因错误而失败: 失败:索引超出范围。试图访问索引为15的元素,但只有0个元素与定位器匹配(css选择器、.entity.element.a)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
您可以使用.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();
})
}