Detox测试时模拟键盘输入后无法点击按钮?
在用Detox测试登录页时,输入账号密码后点击登录按钮没有反应。我已经用waitFor包住按钮操作,但还是报元素不可点击的错误。这是我的测试代码:
describe('登录流程', () => {
it('应能成功提交表单', async () => {
await element(by.id('username')).typeText('testuser');
await element(by.id('password')).typeText('123456');
await detox.waitFor(element(by.id('loginBtn')))
.toBeVisible()
.withTimeout(10000);
await element(by.id('loginBtn')).tap(); // 这里报错元素无法点击
});
});
我试过在tap前加await device.pressBackButton()隐藏键盘,但还是不行。难道是输入框焦点没处理好?或者Detox的等待条件不够?
先检查一下,输入完文本后键盘是不是还开着?如果开着,确实会影响按钮点击。你之前试过的
device.pressBackButton()方向是对的,但可能时机不对。试试这样改:
另外,如果还是不行,可以加上一点小延迟,有时候 Detox 的同步有点跟不上:
别忘了检查下你的
loginBtn在布局里是不是真的可点,有没有被别的透明控件挡住。这种坑我也踩过好几次了,Detox 报错确实容易误导人。