今天遇到, 要写性能测试的默认登录的脚本, 但是使用input.value='xxx', 始终无法正确的模拟用户的输入动作, 点登录按钮,input的内容重新被置空。经过同事指导, 发现解决办法如下, 留个爪印
let input = document.getElementById('username');
let lastValue = input.value;
input.value = '6d915519acf411e9b502fa528da74700';
let event = new Event('input', { bubbles: true });
// hack React16 内部定义了descriptor拦截value,此处重置状态
let tracker = input._valueTracker;
if (tracker) {
tracker.setValue(lastValue);
}
input.dispatchEvent(event);
input = document.getElementById('password');
lastValue = input.value;
input.value = '3';
// hack React16 内部定义了descriptor拦截value,此处重置状态
let tracker1 = input._valueTracker;
if (tracker1) {
tracker1.setValue(lastValue);
}
input.dispatchEvent(event);
document.getElementsByClassName('ant-btn login-form-button ant-btn-primary')[0].click()
原始资料:
https://github.com/facebook/react/issues/11488#issuecomment-347775628









网友评论