无法读取 属性 $$ 的未定义 javascript webdriverio
Cannot read property $$ of undefined javascript webdriverio
我正在尝试使用 webdriverio 框架访问嵌套的网络元素。
我有以下代码
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'
是父元素,使用 $$("mat-list-option")
访问子元素是出现错误的地方。
您的 sflow
变量未定义,这意味着以下表达式没有 return 任何内容。
$$("app-filters-manager app-salesflow-panel mat-expansion-panel").find(element => {
return element.getText() === salesflowName;
});
发生这种情况的原因有多种:
您确定 $$("app-filters-manager app-salesflow-panel mat-expansion-panel")
return 是您要查找的元素的 parent 吗?选择器是否正确?
请记住,find() 遍历并找到 您的 $$("app-filters-manager app-salesflow-panel mat-expansion-panel")
选择器的 children。它也可能 return 多个 children。如果该选择器已经是您要使用的元素,则删除以下部分:
const sflow = $$("app-filters-manager app-salesflow-panel
mat-expansion-panel").find(element => {
return element.getText() === salesflowName; });
确保为 salesflowName
参数传递正确的值
element.getText()
可能 return 正在处理一些带有空格的文本。尝试 element.getText().trim()
基本上你需要确保 sflow
变量的值被初始化。是否是您的选择器问题,salesflowName
参数或空格未通过相等性测试需要通过调试来调查。
祝你好运!
您的选择器似乎无效。不应该是这样吗(寻找class的选择器)?
const sflow = $$(".app-filters-manager .app-salesflow-panel .mat-expansion-panel").find(element => {
return element.getText() === salesflowName;`
其他选择器也一样。而find应该return一个children,这样就可以了。
但是如果它是有效的,你确定元素在 DOM 中吗?
我正在尝试使用 webdriverio 框架访问嵌套的网络元素。
我有以下代码
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'
是父元素,使用 $$("mat-list-option")
访问子元素是出现错误的地方。
您的 sflow
变量未定义,这意味着以下表达式没有 return 任何内容。
$$("app-filters-manager app-salesflow-panel mat-expansion-panel").find(element => {
return element.getText() === salesflowName;
});
发生这种情况的原因有多种:
您确定
$$("app-filters-manager app-salesflow-panel mat-expansion-panel")
return 是您要查找的元素的 parent 吗?选择器是否正确?请记住,find() 遍历并找到 您的
$$("app-filters-manager app-salesflow-panel mat-expansion-panel")
选择器的 children。它也可能 return 多个 children。如果该选择器已经是您要使用的元素,则删除以下部分:
const sflow = $$("app-filters-manager app-salesflow-panel mat-expansion-panel")
.find(element => { return element.getText() === salesflowName; });
确保为
salesflowName
参数传递正确的值element.getText()
可能 return 正在处理一些带有空格的文本。尝试element.getText().trim()
基本上你需要确保 sflow
变量的值被初始化。是否是您的选择器问题,salesflowName
参数或空格未通过相等性测试需要通过调试来调查。
祝你好运!
您的选择器似乎无效。不应该是这样吗(寻找class的选择器)?
const sflow = $$(".app-filters-manager .app-salesflow-panel .mat-expansion-panel").find(element => {
return element.getText() === salesflowName;`
其他选择器也一样。而find应该return一个children,这样就可以了。
但是如果它是有效的,你确定元素在 DOM 中吗?