为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

人到中年有点甜 2022-07-21 10:11:28
我正在尝试使用 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")是出现错误的地方。
查看完整描述

2 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

您的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")。它也可能返回多个孩子。如果该选择器已经是您要使用的元素,则删除以下部分:

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

  1. 确保您为salesflowNameparam传递了正确的值

  2. element.getText()可能会返回一些带有空格的文本。尝试element.getText().trim()

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

祝你好运!


查看完整回答
反对 回复 2022-07-21
?
慕田峪9158850

TA贡献1794条经验 获得超8个赞

看起来您的选择器无效。不应该是这样(找课的选择器)吗?

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

其他选择器也一样。并且find应该返回一个孩子,这样就可以了。

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


查看完整回答
反对 回复 2022-07-21
  • 2 回答
  • 0 关注
  • 180 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号