无法读取未定义的 javascript webdriverio 的属性 $$

我正在尝试使用 webdriverio 框架访问嵌套的 webelement。


我有以下代码


function selectSales(sfilters, salesflowName) {

  const sflow = $$("app-filters-manager app-salesflow-panel mat-expansion-panel").find(element => {

        return element.getText() === salesflowName;

  });


/* The below is to select the checkbox from a list of checkboxes under 

the parent */  

sfilters.forEach(fil => {

    sflow.$$("mat-list-option").find(el => { //* > This is where I am getting error.

        return el.getText().includes(fil);

    }).$('mat-pseudo-checkbox').click();

  });

}

我正进入(状态Cannot read property '$$' of undefined


不知道为什么会出现错误。'sflow'是父 web 元素,使用访问子元素$$("mat-list-option")是出现错误的地方。


人到中年有点甜
浏览 181回答 2
2回答

白衣染霜花

您的sflow变量未定义意味着以下表达式不返回任何内容。$$("app-filters-manager app-salesflow-panel mat-expansion-panel").find(element => {         return element.getText() === salesflowName;   });发生这种情况的原因有几个:您确定$$("app-filters-manager app-salesflow-panel mat-expansion-panel")返回您要查找的元素的父级吗?选择器是否正确?请记住,find() 会遍历并找到选择器的子项 $$("app-filters-manager app-salesflow-panel mat-expansion-panel")。它也可能返回多个孩子。如果该选择器已经是您要使用的元素,则删除以下部分:const sflow = $$("app-filters-manager app-salesflow-panel mat-expansion-panel") .find(element => { return element.getText() === salesflowName; }) ;确保您为salesflowNameparam传递了正确的值element.getText()可能会返回一些带有空格的文本。尝试element.getText().trim()基本上你需要确保sflow变量的值被初始化。无论是您的选择器、salesflowName参数或空格未能通过相等性测试的问题,都需要通过调试进行调查。祝你好运!

慕田峪9158850

看起来您的选择器无效。不应该是这样(找课的选择器)吗?const sflow = $$(".app-filters-manager .app-salesflow-panel .mat-expansion-panel").find(element => {         return element.getText() === salesflowName;`其他选择器也一样。并且find应该返回一个孩子,这样就可以了。但如果它是有效的,你确定元素在 DOM 中吗?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript