TestStack / TestStack.Seleno

Seleno helps you write automated UI tests in the right way by implementing Page Objects and Page Components and by reading from and writing to web pages using strongly typed view models.
http://teststack.github.com/TestStack.Seleno/
MIT License
180 stars 60 forks source link

Test the performance: A Grid filter Execution time #240

Open wijdenchebbi opened 8 years ago

wijdenchebbi commented 8 years ago

Hi,

I want to test, in ASP.NET MVC project, the execution time in TestStack.Seleno , i found Stopwatch that is a c# class. Is there a specific method in TestStack.Seleno?

Also I want to add wait until in : Find.Element(By.Id("idtest")).Displayed; How can i do it?

robdmoore commented 8 years ago

It depends on what you are trying to test the timing of.

If you want to test a specific call then you could do something like:

var stopwatch = new Stopwatch();
stopwatch.Start();

Find.Element(By.Id("an-id"));

stopwatch.Stop();
// stopwatch.Elapsed contains the elapsed time

If you want to test a whole test run you could use whatever test framework you are using (e.g. NUnit / xUnit) to hook into the start and end of each test e.g. using fixtures or [SetUp]/[TearDown] etc.

robdmoore commented 8 years ago

To wait for an element to be displayed you can do:

new WebDriverWait(Browser, TimeSpan.FromSeconds(5))
    .Until(b => ExpectedConditions.ElementIsVisible(By.Id("idtest")));

That assumes the code is running inside of a page object sine it accesses Browser.

I think that would read much better as:

WaitFor.VisibleElement(By.Id("idtest"), TimeSpan.FromSeconds(5));

Feel free to submit a pull request that modifies https://github.com/TestStack/TestStack.Seleno/blob/master/src/TestStack.Seleno/PageObjects/Actions/IWait.cs and https://github.com/TestStack/TestStack.Seleno/blob/master/src/TestStack.Seleno/PageObjects/Actions/Wait.cs to make that happen :)

wijdenchebbi commented 8 years ago

Thanks,

WaitFor solves my problem.