【发布时间】:2021-02-03 13:11:13
【问题描述】:
我的方案是在页面中添加一个部分并对其执行操作。但是由于已经存在具有相同 xpath 的元素,webdriver 正在单击第一个元素并且脚本失败。所以,我想获取现有具有相同 xpath 的元素数量,然后将计数增加 1,以便单击新添加的部分。请找到下面的代码并纠正我哪里出错了。(或)建议我任何其他方法。 另外,请让我知道行号。如果解决了获取元素数量的问题,则 9 有效。谢谢!
方法:
this.getElementCount=async function(locator) {
try {
console.info('Verifying count for element ' + locator);
let noOfElements = await element.all(locator).count();
await console.info('There are ' + noOfElements + 'elements in UI');
return noOfElements;
} catch(err) {
throw err;
}
}
调用方法:
var compLocator = element(by.xpath("//div[@title='Test']"));
this.clickOnComp=async function(){
var elementsCount=getElementCount(compLocator);
console.info("No. of elements : "+elementsCount);
if(elementsCount>1){
var currentEle=elementsCount+1;
var currentCompLocator=compLocator[currentEle]; // line no.9
console.info("comp locator :" +currentCompLocator);
await clickElement(currentCompLocator);
console.info("Clicked : "+currentCompLocator);
}
else{
await clickElement(compLocator);
}
}
输出:
Verifying count for element [object Object]
No. of elements : [object Promise]
(node:13915) UnhandledPromiseRejectionWarning: TypeError: Invalid locator
【问题讨论】:
标签: node.js selenium protractor