Serenity-BDD:剧本:如何在页面上的任何位置(任何元素中)查找文本字符串

Serenity-BDD: Screenplay: How to find a string of text anywhere on the page (in any element)

找了几个小时,不得不问...

我想在页面上找到一串文本。具体来说,我希望确保根据用户提交的表单显示正确的错误。考虑到可能有多个消息和我正在处理的 Web 应用程序,如果我可以将每个元素捕获到一个列表中,我认为我可以遍历该列表并匹配字符串。

Serenity-BDD 对我来说是新手,我正在研究剧本(我的老板喜欢报告),但我发现很难理解其中的一些内容(而且好的演练示例很少).此外,我对 Selenium 的经验也很少。

如果有人能提供帮助,或向我指出一些信息(除了 serenity-bdd 在线手册),我将不胜感激。

使用剧本模式,您可以编写 return 您可以在 BDD 测试中检查表单错误的问题。例如,我有一个表单,它在输入值旁边显示错误。所有错误都有 css class “.text-danger”。 匹配的 Question 对象将如下所示:

public class FormErrors
 implements Question<List<String>> {

 public static FormErrors displayed() {
    return new FormErrors();
 }

 @Override
 public List<String> answeredBy( Actor actor ) {
    return Text.of( EnterForm.FORM_ERRORS ).viewedBy( actor ).asList();
 }
}

FORM_ERRORS 常量如下所示:

public static final Target FORM_ERRORS = Target.the( "Form Errors" ).locatedBy( ".text-danger" );

所以我可以像这样检查正确的错误:

theActorInTheSpotlight().should( 
  seeThat( FormErrors.displayed(), is( errors ) ) 
);

screenplay-pattern-todomvc 项目是编写剧本测试的一个很好的例子。