Serenity 4.1.3迁移后Screenplay存储字符串列表报错求助
Serenity 2.x 迁移到 4.1.3:获取字符串列表的正确写法
问题原因
你碰到的java.lang.String cannot be cast to class java.util.List错误,核心是Serenity 4.x的API逻辑发生了变化:Text.of()仅用于提取单个元素的文本,而你传入的ThePage.element()如果是匹配多个元素的目标(对应2.x里能返回列表的场景),用Text.of(...).asListOf(String.class)会把单个元素的文本(String类型)强行转成List,自然触发类型转换异常。
修复代码
在Serenity 4.x中,要提取一组元素的文本列表,得用Elements.of()来定位元素集合,再通过texts()方法获取文本列表,配合actor.asksFor()调用:
List<String> x = actor.asksFor(Elements.of(ThePage.elements()).texts());
注意事项
- 确认
ThePage里的目标方法(比如elements())定义的是匹配多个元素的Target,示例:public class ThePage { public static Target elements() { return Target.the("目标元素列表").locatedBy("你的CSS/XPath选择器"); } } - 如果只是提取单个元素的文本,直接用
Text.of(ThePage.singleElement()).value()即可拿到String类型结果,不需要转List
内容的提问来源于stack exchange,提问作者Michael Kin S. Ip
相关产品推荐
相关产品推荐

