WDIO在React Native Web密码输入框无法输入值的解决方案求助
可行解决方案如下:
- 方案1:显式保证输入框聚焦、清空后再输入
部分React Native Web组件会存在点击后焦点延迟生效的问题,可增加显式聚焦、清空步骤再执行输入:
$('#login-password').waitForClickable({ timeout: 3000 }); $('#login-password').click(); $('#login-password').focus(); $('#login-password').clearValue(); $('#login-password').addValue("passme");
- 方案2:通过JS注入直接赋值并触发受控组件事件
React Native Web的密码输入框多为受控组件,默认的addValue可能无法触发组件需要的input/change事件,可通过执行原生JS直接赋值并手动触发事件:
const passwordEle = $('#login-password'); browser.execute((element, password) => { element.value = password; // 手动触发React受控组件所需的输入事件 element.dispatchEvent(new Event('input', { bubbles: true })); element.dispatchEvent(new Event('change', { bubbles: true })); }, passwordEle, "passme");
- 方案3:调整Appium输入法配置
移动端测试时系统默认输入法可能存在密码框输入限制,可在启动配置中开启Appium专属输入法:
// wdio.conf.js 中capabilities配置新增以下参数 capabilities: [{ // 其他原有配置保留 "unicodeKeyboard": true, "resetKeyboard": true }]
- 方案4:确认webview上下文正确性
如果页面存在嵌套渲染逻辑,可先打印当前上下文,确认处于目标webview环境内:
// 输出结果应为WEBVIEW_前缀的对应浏览器上下文 console.log(browser.getContext());
内容的提问来源于stack exchange,提问作者kanna
相关产品推荐
相关产品推荐

