满足预期条件后采取一些措施

时间:2019-08-30 11:54:14

标签: c# selenium nunit

我正在使用Nunit进行硒测试。我正在使用Nunit AssertionHelper类。

所以我在C#文件中写了以下条件

Expect(() => page.ToastTitle, Is.EqualTo("Ok").After(1.Seconds()), "Totally wrong");

这可以按预期工作,但是我希望在获得相同条件的Ok消息后,添加一些操作。

有可能吗?任何想法,我怎么可以实现这一点?

1 个答案:

答案 0 :(得分:0)

由于您将页面标题用作可以继续进行测试的信号,因此您将需要使用WebDriverWait对象:

var timeToWait = TimeSpan.FromSeconds(1);
var wait = new WebDriverWait(driver, timeToWait);

wait.Until(d => page.ToastTitle == "Ok");

// Do the next thing in your test

如果一秒钟后吐司标题不是"Ok",则Selenium会抛出WebDriverTimeoutException,这将使测试失败。

扩展方法很容易编写,并且非常方便:

public static class WebDriverExtensions
{
    public static void WaitUntil<TResult>(this IWebDriver driver, Func<IWebDriver, TResult> condition, int secondsToWait = 30)
    {
        var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(secondsToWait));

        wait.Until(condition);
    }
}

这使得等待使用起来更加直观:

driver.WaitUntil(d => page.ToastTitle = "Ok");

// Perform the next step in your test.