首页 > 解决方案 > TestCafe - 获取下拉列表中的属性值

问题描述

有一个带有过滤按钮的搜索栏。单击相同的子菜单(下拉菜单)将显示。HTML 看起来像:

<ul >
  <li data-value"svalue1">
     <svg>.... </svg>
     <p> Value1 </p>
  </li>
  <li data-value"svalue2">
     <svg> ....</svg>
     <p> Value2 </p>
  </li>
  <li data-value"svalue3">
     <svg> </svg>
     <p> Value3 </p>
  </li>

我需要将选项的值作为数组检索并进行比较。我能够断言单个值,但无法将其存储在数组中以进行比较。

var tab = Selector('ul');
-
-
.expect(tab.child('li').nth(3).innerText)
            .eql('Value3', 'The value is not correct');

但这不起作用

for (let i = 0; i < 6; i++) {
                myArray.push(tab.child('li').nth(i).innerText);
                console.log("value:" + tab.child('li').nth(i).innerText);

            }

Prints: value:[object Object]

任何想法?

标签: testingautomated-testsdropdowne2e-testingtestcafe

解决方案


您需要添加“等待”关键字。例如:

for (let i = 0; i < 6; i++) {
   console.log("value:" + await tab.child('li').nth(i).innerText);
}

请参阅“访问页面元素属性”主题以查找此注释:

Note that selector's property getters and client functions are asynchronous. If you need their resulting value in your code, use the await keyword. However, you can omit await when you pass a selector property or a client function value into an assertion.


推荐阅读