我有一个jetpack 撰写bottomSheetDialog,看起来像这样(如下),当我使用testTag方法时,它没有显示在appium中,但是当我使用Modifier.semantics设置contentDescription时{ 内容描述=“” 然后它在appium检查器中显示良好。可能是什么问题?这是 BottomSheet 组件的问题吗? testTag 和 contentDescription 都运行得很好
@Composable
fun CustomBottomSheetDialog(
onDismissRequest: () -> Unit,
message: String,
title: String = "",
titleColor: Color = Color.Unspecified,
@SuppressLint("ComposableLambdaParameterNaming")
additionalContent: @Composable ColumnScope.() -> Unit = {},
) {
BottomSheetDialog(onDismissRequest) {
Column(Modifier.padding(20.dp)) {
Row(
modifier = Modifier.fillMaxWidth(),
verticalAlignment = Alignment.CenterVertically,
) {
Text(
text = title,
modifier = Modifier
.weight(1f)
.testTag("titleTextView"),
fontWeight = FontWeight.Bold,
fontSize = 20.dp.asSp,
textAlign = TextAlign.Start,
color = titleColor,
)
Image(
painter = painterResource(id = R.drawable.ic_close_cross_grey),
contentDescription = null,
Modifier
.size(24.dp)
.clickable(onClick = onDismissRequest, role = Role.Button),
)
}
Text(
text = message,
modifier = Modifier
.fillMaxWidth()
.padding(top = 16.dp)
.idTestTag(R.id.contentTextView),
fontSize = 14.dp.asSp,
)
additionalContent()
}
}
}
我尝试以不同的方式设置 testTag 但不起作用,但 contentDescription 显示得很好,并且 testTagsAsResourceId 已经设置为 true
根据文档 Appium 检查器无法识别 Jetpack Compose 中使用 testTag 修饰符设置的测试标签。要使其正常工作,您可以尝试在屏幕的根级别添加
Modifier.semantics { testTagsAsResourceId = true }
。
Scaffold(
modifier = Modifier.semantics { testTagsAsResourceId = true },
bottomBar = {},
scaffoldState = rememberScaffoldState(),
) {
NavigationHost(navHostController = appState.navController,)
}
您可以直接设置到脚手架上或用盒子覆盖脚手架,如下所示,
Box(modifier = Modifier.semantics { testTagsAsResourceId = true }) {
Scaffold(
bottomBar = {},
scaffoldState = rememberScaffoldState(),
) {
NavigationHost(navHostController = appState.navController,)
}
}