我正在尝试使用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")
访问子元素是出现错误的地方。
您的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")
选择器的the children。它还可能返回多个孩子。如果该选择器已经是您要使用的元素,则删除以下部分:
const sflow = $$(“ app-filters-manager app-salesflow-panelmat-expansion-panel“)
。find(element => {返回element.getText()=== salesflowName; });
确保为salesflowName
参数传递正确的值
element.getText()
可能返回其中包含空格的某些文本。尝试element.getText().trim()
基本上,您需要确保sflow
变量的值已初始化。选择器,salesflowName
参数或空格未通过相等性测试的问题是否需要通过调试进行调查。
祝你好运!
看来您的选择器无效。难道不是这样的(选择班级的选择者)吗?
const sflow = $$(".app-filters-manager .app-salesflow-panel .mat-expansion-panel").find(element => {
return element.getText() === salesflowName;`
与其他选择器相同。并且find应该返回一个孩子,所以可以。
但是如果有效,您确定元素在DOM中吗?