React native Appium React Native未准备好进行文本输入

React native Appium React Native未准备好进行文本输入,react-native,appium,webdriver-io,appium-ios,React Native,Appium,Webdriver Io,Appium Ios,我最近切换到Appium+WebDrivero进行E2E测试。除了一个与文本输入相关的测试用例外,其他一切都运行得很好 基本上,被测试的组件是一个登录屏幕,它使用redux表单进行表单管理。我经常遇到这样的错误:“'login field”“Other'未准备好进行文本输入。可访问性元素本身及其可访问子元素都没有输入焦点”。其组成如下: signnscreen.tsx 导出类标志屏幕扩展React.Component{ render(){ const{handleSubmit,submiting

我最近切换到Appium+WebDrivero进行E2E测试。除了一个与文本输入相关的测试用例外,其他一切都运行得很好

基本上,被测试的组件是一个登录屏幕,它使用redux表单进行表单管理。我经常遇到这样的错误:“'login field”“Other'未准备好进行文本输入。可访问性元素本身及其可访问子元素都没有输入焦点”。其组成如下:

signnscreen.tsx

导出类标志屏幕扩展React.Component{
render(){
const{handleSubmit,submiting,style}=this.props;
返回(
);
}
}
Input.tsx

导出类输入扩展React.Component{
render(){
常数{
输入,
元:{错误,活动,聚焦},
可访问性标签,
睾丸
}=这是道具;
const-showError=!active&&!!错误&&!聚焦;
const errorText=“错误!”
返回(
{淋浴器&&(
{errorText}
)}
);
}
}
符号筛选测试ts

description('登录屏幕测试',()=>{
让客户;
之前(异步()=>{
//设置代码
});
毕竟(异步()=>{
//拆卸代码
});
它('Can login',async()=>{
const loginField=wait client.$(“~login field”);
等待loginField.setValue('test@gmail.com“);//此处有错误
const passwordField=等待客户端。$(“~password field”);
wait passwordField.set('password'+'\n');
});
});
我确实意识到,当我在
Input.tsx
组件中现有的
组件上添加一个额外的
组件时,测试用例可以工作,如下所示:

Input.tsx

导出类输入扩展React.Component{
render(){
常数{
输入,
元:{错误,活动,聚焦},
可访问性标签,
睾丸
}=这是道具;
const-showError=!active&&!!错误&&!聚焦;
const errorText=“错误!”
返回(
{淋浴器&&(
{errorText}
)}
);
}
}
或者在
视图中删除嵌套错误消息的组件中的固定高度,如下所示:

Input.tsx

导出类输入扩展React.Component{
render(){
常数{
输入,
元:{错误,活动,聚焦},
可访问性标签,
睾丸
}=这是道具;
const-showError=!active&&!!错误&&!聚焦;
const errorText=“错误!”
返回(
{淋浴器&&(
{errorText}
)}
);
}
}

那么是什么原因呢?我真的不知道是什么原因导致Appium在没有进行上述调整的情况下无法拾取输入焦点。

我认为这是Appium最近出现的一个bug-

您不应该为ios指定accessibilityLabel ios和android之类的单独道具,因此尝试下一个解决方法:

export default function testID(id) {
    return Platform.OS === 'android'
        ? {
            accessible        : true,
            accessibilityLabel: id,
        }
        : {
            testID: id,
        };
}
然后

<TextInput
    {...otherProps}
    {...testID('some-testID')}
/>


我尝试降级到Appium 1.17.0,现在对我有效。谢谢!这简直把我挡了一个星期!