Jetpack Compose BottomSheetDialog testTag Appium

问题描述 投票:0回答:1

我有一个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

android-jetpack-compose appium android-bottomsheetdialog
1个回答
0
投票

根据文档 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,)
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.