Webdriver IO中如何在选择器内使用变量实现参数化定位
问题解决方法
错误原因
- 你使用了普通单引号包裹选择器字符串,JavaScript 中普通单引号/双引号不支持
${}模板插值语法,因此参数rowCount不会被替换为实际传入的数值,${rowCount}会直接作为选择器的一部分发送,导致选择器语法非法。
修复方案
方案1:使用ES6模板字符串(推荐)
将选择器的包裹符从单引号'替换为反引号`,即可正常解析插值变量:
getAnyRow(rowCount) { return $$(`#BookingsData tr:nth-child(${rowCount}) td span`); }
方案2:使用字符串拼接
如果运行环境不支持ES6语法,可以改用字符串拼接实现参数传递:
getAnyRow(rowCount) { return $$('#BookingsData tr:nth-child(' + rowCount + ') td span'); }
注意事项
- CSS选择器
nth-child()的计数从1开始,传入的rowCount参数最小值应为1,且不能超过表格的实际行数,否则会返回空元素列表。
内容的提问来源于stack exchange,提问作者Rosy Taylor
相关产品推荐
相关产品推荐

