升级Serenity-Cucumber至3.4.2后@DefaultUrl无法读取serenity.config
问题解决:Serenity-Cucumber 3.4.2中@DefaultUrl读取配置报错
问题现象
升级Serenity-Cucumber到3.4.2版本后,运行测试时抛出断言错误:
java.lang.AssertionError: Invalid URL: page:signin.url at net.serenitybdd.core.pages.PageUrls.verified(PageUrls.java:80)
原通过@DefaultUrl("page:signin.url")从serenity.config读取URL的方式失效,但使用静态URL(如@DefaultUrl("https://dev-signin.com"))可正常运行。
相关代码与配置:
页面类代码
@DefaultUrl("page:signin.url") public class SigninPage extends PageObject { ... }
serenity.config配置
environments { prod { signin.url = "https://signin.com" } dev { signin.url = "https://dev-signin.com" } default { signin.url = "https://dev-signin.com" } all { admin.signin.url = "#{signin.url}/admin" } }
原因分析
Serenity 3.4.x版本调整了配置引用语法规则,移除了旧版本中page:前缀的配置引用方式,要求直接使用EL表达式#{}来引用配置键。
解决方案
修改页面类中的@DefaultUrl注解,将page:signin.url替换为#{signin.url}即可:
@DefaultUrl("#{signin.url}") public class SigninPage extends PageObject { ... }
修改后即可正常从serenity.config中读取对应环境的URL配置,无需改动配置文件内容。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

