2015-04-05 60 views
0

请问I.Expect.Text(“sometext”)是否需要In方法与指定的选择器?使用I.Expect.Text和fluentautomation

我问问作为我继承的一些测试没有方法追加,我们的测试通过,即使当我知道所提供的文本不存在页面上。

我已经看过文档,重新http://fluent.stirno.com/docs/#asserts-text - 它似乎并不清楚(对我来说),在选择器必须存在。我假设它需要在场。

我想我问的是,如果方法确实需要附加为了使断言正常工作,我会流利地说明“sometext”是否出现在任何div或p标签或类在页面上,或者我应该在整个使用ID。我在https://github.com/stirno/FluentAutomation/issues/133看到有用的东西。

所以像下面这样的东西可以被包装到AssertSyntaxProvider的扩展方法中,但它看起来笨手笨脚?

 var texts = I.Find("html").Elements.Select(el => el.Item2().Text); 
     I.Assert.True(() => texts.Any(t => t.Contains("statement1"))); 
     I.Assert.True(() => texts.Any(t => t.Contains("statement2"))); 
     I.Assert.True(() => texts.Any(t => t.Contains("statement3"))); 

帮助赞赏!

最后一件事 - 这是一个很棒的图书馆!

回答

2

是的,需要In作为链的执行块。它已经有一段时间了,因为我已经能够专注于扩展FluentAutomation,因此对多个元素进行断言并没有多少好处。

我确实有一个很好的计划,我只是没有时间实施。

至于你具体的测试,你接近我会为现在使用:

I.Open("http://fluent.stirno.com"); 
var elements = I.FindMultiple("*").Children.Select(x => x()); 
I.Assert.True(() => elements.Any(x => x.Element.Text.Contains("v3.0 Released!"))); 

V3.1会有一些更好的方法来处理这个但这至少使用灒的*选择获取每个元素(警告:可能真的很慢,所以如果可以限制它,也许使用“div,p,span”或类似的东西)。

+0

优秀的建议,我一直在考虑选择器“div,p,span”,所以现在就要使用它,直到v3.1!爱图书馆btw! – Paulwin 2015-04-05 18:43:20