Webdriver IO执行click时报错Cannot read properties of undefined (reading 'click')如何解决
报错原因
该报错说明你调用click方法的目标对象element[1]为undefined,本质是通过$$("input[type='checkbox']")获取的元素数组为空或者长度不足2,无法命中索引为1的元素。
核心问题
Webdriver IO v8及以上版本默认使用异步模式,所有内置API调用都会返回Promise,必须添加await等待执行完成,否则代码执行顺序会错乱:页面还没完成加载就已经执行元素选择逻辑,自然无法拿到对应元素。你的代码中browser.url、browser.pause、browser.saveScreenshot都没有添加await。
修复后的代码
it('Checkbox', async () => { // 等待页面加载完成 await browser.url('https://rahulshettyacademy.com/AutomationPractice/') const element = await $$("input[type='checkbox']") // 增加长度判断,避免索引越界报错 if (element.length >= 2) { await browser.pause(3000) await element[1].click() console.log(await element[1].isSelected()) } else { console.log('获取到的复选框元素数量不足,当前数量:', element.length) } // 等待截图执行完成 await browser.saveScreenshot('screenshot.png') })
额外排查点
如果修改后仍出现报错,可以打印element.length确认元素是否成功获取,检查选择器语法是否书写正确。
内容的提问来源于stack exchange,提问作者kiashiq
相关产品推荐
相关产品推荐

