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

问题描述 投票:0回答:2

我正在尝试使用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")访问子元素是出现错误的地方。

javascript jquery selenium webdriver-io
2个回答
0
投票

您的sflow变量是未定义的,这意味着以下表达式不返回任何内容。

$$("app-filters-manager app-salesflow-panel mat-expansion-panel").find(element => {
        return element.getText() === salesflowName;
  });

这可能由于几件事而发生:

  1. 您确定$$("app-filters-manager app-salesflow-panel mat-expansion-panel")返回您要查找的元素的父级吗?选择器正确吗?

  2. 请记住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; });

  1. 确保为salesflowName参数传递正确的值

  2. element.getText()可能返回其中包含空格的某些文本。尝试element.getText().trim()

基本上,您需要确保sflow变量的值已初始化。选择器,salesflowName参数或空格未通过相等性测试的问题是否需要通过调试进行调查。

祝你好运!


0
投票

看来您的选择器无效。难道不是这样的(选择班级的选择者)吗?

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

与其他选择器相同。并且find应该返回一个孩子,所以可以。

但是如果有效,您确定元素在DOM中吗?

© www.soinside.com 2019 - 2024. All rights reserved.