같은 코드로 IE11을 테스트할때 UnsupportedOperationError 에러가 나타납니다.


[package.json]

iedriver: 3.9.2

selenium-webdriver: 4.0.0-alpha.1



[Node.js] 10.8.0

[npm ] 6.2.0


IE Browser - IE 11

해당 에러가 났던 코드입니다.


let subMenuList = await this.currlnbMenu.findElements(By.css('ul li'));

await Promise.all(subMenuList.map(async (item,index)=>{
let topSubMenuTextTag = await item.findElement(By.css('.top-menu_text'));

// 이부분에서 에러가 나타납니다.
let targetText = await topSubMenuTextTag.getText();
// 이부분에서 에러가 나타납니다.
if(clickSubMenuText.toLowerCase()===targetText.toLowerCase()){
console.log("find It");
this.currlnbSubMenu = item;
this.currlnbSubMenuText = targetText;
await topSubMenuTextTag.click();
return item;
}
else{
console.log("[subMenuSelect] Looking for element : " ,clickSubMenuText );
console.log("[subMenuSelect] Checking for element : " ,targetText );
console.log('');
}
}));


정확히 나는 부분은 Promise.all 안에 async map 순환 까지는 문제가 없으나 


순환되는 item 파라미터로 


item.getText , item.getAttribute('innerText') 등의 작업을 하게되면 위의 알수없는 미지원에러가 나타납니다.


그래서 해당 코드를 수정했습니다.


let subMenuList = await this.currlnbMenu.findElements(By.css('ul li'));
let length = subMenuList.length;
for(let i=0;i<length;i++){
let topSubMenuTextTag = await subMenuList[i].findElement(By.css('.top-menu_text'));
let targetText = await topSubMenuTextTag.getText();
if(clickSubMenuText.toLowerCase()===targetText.toLowerCase()){
console.log('find It');
this.currlnbSubMenu = subMenuList[i];
this.currlnbSubMenuText = targetText;
await topSubMenuTextTag.click();
break;
}
else{
console.log("[subMenuSelect] Looking for element : " ,clickSubMenuText );
console.log("[subMenuSelect] Checking for element : " ,targetText );
console.log('');
}
}


// Promise.all 과 map 의 합작으로 인해서 오류가 나는것으로 추측 하여 일반 for 문으로 변경하여 사용


+ Recent posts