Serenity-BDD:编剧:如何在页面的任何位置找到一串文字(在任何元素中)

时间:2017-01-21 01:20:27

标签: serenity-bdd

搜索了几个小时后,我不得不问......

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

宁静-BDD对我来说是新手,我正在挖掘剧本(我的老板很喜欢报道),但我发现很难绕过其中一些(很好的演练例子很少)。另外,我对Selenium的经验也很少。

如果有人可以提供帮助,或者给我一些信息(除了serenity-bdd在线手册),我将非常感激。

1 个答案:

答案 0 :(得分:2)

使用剧本模式,您可以编写问题,这些问题会返回您的表单错误,可以在BDD测试中进行检查。例如,我有一个表单,显示输入值旁边的错误。所有错误都有css类&#34; .text-danger&#34;。 匹配的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 ) ) 
);

所以我能够检查这样的错误:

ng-click="$mdOpenMenu(); AppCtrl.closeMdMenu();"

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