0

I.Expect.Text(" sometext ") 是否需要带有指定选择器的In方法?

我问我继承的一些测试没有附加In方法,并且我们的测试通过了,即使我知道页面上不存在提供的文本。

我查看了文档,重新http://fluent.stirno.com/docs/#asserts-text - 并且似乎不清楚(无论如何对我来说)In 选择器必须存在。我假设它需要存在。

我想我要问的是,如果确实需要附加In方法才能使断言正常工作,我将如何流畅地说明“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")));

帮助赞赏!

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

4

1 回答 1

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 将有一些更好的方法来处理这个问题,但这至少使用 Sizzle 的 * 选择器来获取每个元素(警告:可能真的很慢,所以如果可以限制的话,可以使用“div,p,span”或类似的)。

于 2015-04-05T18:39:46.953 回答