【问题标题】:Using I.Expect.Text with fluentautomation将 I.Expect.Text 与 fluentautomation 一起使用
【发布时间】:2015-04-05 17:24:06
【问题描述】:

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

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

我查看了文档,re 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")));

帮助感激!

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

【问题讨论】:

    标签: selenium ui-automation fluentautomation


    【解决方案1】:

    是的,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" 或类似的它)。

    【讨论】:

    • 很好的建议,我也在考虑选择器“div,p,span”,所以现在直到 v3.1!顺便说一句,爱图书馆!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多