{"__v":5,"_id":"54d2994a2ce0e00d0075159c","category":{"__v":3,"_id":"54d299492ce0e00d0075159a","pages":["54d2994a2ce0e00d0075159c","54d91797ea2a7d0d002a5ab2","5551bb13bcb05a0d00693109"],"project":"54d299482ce0e00d00751596","version":"54d299492ce0e00d00751599","sync":{"url":"","isSync":false},"reference":false,"createdAt":"2015-02-04T22:12:25.857Z","from_sync":false,"order":9999,"slug":"documentation","title":"Documentation"},"project":"54d299482ce0e00d00751596","user":"54c4ca1473b3db0d001a7571","version":{"__v":1,"_id":"54d299492ce0e00d00751599","project":"54d299482ce0e00d00751596","createdAt":"2015-02-04T22:12:25.351Z","releaseDate":"2015-02-04T22:12:25.351Z","categories":["54d299492ce0e00d0075159a"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"","version_clean":"1.0.0","version":"1.0"},"updates":["5550d56f00420e0d00d1319b"],"next":{"pages":[],"description":""},"createdAt":"2015-02-04T22:12:26.607Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"auth":"required","params":[],"url":""},"isReference":false,"order":1,"body":"### Pre-requisites\n.NET 4.0 framework\n\n## Getting Started\n1. Install via NuGet  \n`install-package TestStack.White`\n2. Have a look at the [WPF](https://github.com/TestStack/White/tree/master/src/Sample%20App/Wpf) or [WinForms](https://github.com/TestStack/White/tree/master/src/Sample%20App/WinForms) sample projects\n3. Have a look at Whites UI Tests, White has automated tests for most controls to prevent regressions in the codebase. These serve as a great example of how to automate different controls. See [White's UI Tests](https://github.com/TestStack/White/tree/master/src/TestStack.White.UITests/ControlTests)\n4. Download [http://uiautomationverify.codeplex.com/](http://uiautomationverify.codeplex.com/) which is an ESSENTIAL tool when doing UI Automation work.\n5. Start writing tests, first off you require a unit testing framework like xUnit or nUnit. See below for a basic walkthrough\n6. Join the mailing list at [https://groups.google.com/forum/#!forum/teststack_white](https://groups.google.com/forum/#!forum/teststack_white)\n7. Report issues at [https://github.com/TestStack/White/issues?state=open](https://github.com/TestStack/White/issues?state=open)\n8. If you would like to contribute back, read [Contributing](/Contributing.html) to learn how to get started contributing back!\n\n## Writing your first test\n\n### Start off with an empty test stub\n\nIn *MSTest*:\n\n``` csharp\n[TestClass]\npublic class MyTests\n{\n    [TestMethod]\n    public void MyFirstUITest()\n    {\n    }\n}\n```\n\nIn *NUnit*:\n\n``` csharp\n[TestFixture]\npublic class MyTests\n{\n    [Test]\n    public void MyFirstUITest()\n    {\n    }\n}\n```\n\nIn *xUnit*:\n\n``` csharp\npublic class MyTests\n{\n    [Fact]\n    public void MyFirstUITest()\n    {\n    }\n}\n```\n\n### Get hold of a window\nFirst you need to determine the correct path of the application you want to test. \n\nIn *MSTest*: \n``` csharp\nvar applicationDirectory = TestContext.TestDeploymentDir;\n```\n\nIn *NUnit*: \n``` csharp\nvar applicationDirectory = TestContext.CurrentContext.TestDirectory;\n```\n\nThen you create a new instance of your application\n``` csharp\nvar applicationPath = Path.Combine(applicationPath, \"foo.exe\");\nApplication application = Application.Launch(applicationPath);  \nWindow window = application.GetWindow(\"bar\", InitializeOption.NoCache);\n```\n\nWhite uses the UI Automation API (UIA) to find controls on a window. UIA communicates to a displayed window via window messages. This find is performed by iterating through all the controls in a window.\n\n### Finding a UI Item and performing action\n``` csharp\nButton button = window.Get<Button>(\"save\");\nbutton.Click();\n```\n\n### Finding a UIItem based on SearchCriteria\n``` csharp\n    SearchCriteria searchCriteria = SearchCriteria\n        \t.ByAutomationId(\"name\")\n        \t.AndControlType(typeof(TextBox))\n        \t.AndIndex(2);\n    TextBox textBox = (TextBox) window.Get(searchCriteria);\n    textBox.Text = \"Anil\";\n```","excerpt":"","slug":"getting-started","type":"basic","title":"Getting Started with White"}

Getting Started with White


### Pre-requisites .NET 4.0 framework ## Getting Started 1. Install via NuGet `install-package TestStack.White` 2. Have a look at the [WPF](https://github.com/TestStack/White/tree/master/src/Sample%20App/Wpf) or [WinForms](https://github.com/TestStack/White/tree/master/src/Sample%20App/WinForms) sample projects 3. Have a look at Whites UI Tests, White has automated tests for most controls to prevent regressions in the codebase. These serve as a great example of how to automate different controls. See [White's UI Tests](https://github.com/TestStack/White/tree/master/src/TestStack.White.UITests/ControlTests) 4. Download [http://uiautomationverify.codeplex.com/](http://uiautomationverify.codeplex.com/) which is an ESSENTIAL tool when doing UI Automation work. 5. Start writing tests, first off you require a unit testing framework like xUnit or nUnit. See below for a basic walkthrough 6. Join the mailing list at [https://groups.google.com/forum/#!forum/teststack_white](https://groups.google.com/forum/#!forum/teststack_white) 7. Report issues at [https://github.com/TestStack/White/issues?state=open](https://github.com/TestStack/White/issues?state=open) 8. If you would like to contribute back, read [Contributing](/Contributing.html) to learn how to get started contributing back! ## Writing your first test ### Start off with an empty test stub In *MSTest*: ``` csharp [TestClass] public class MyTests { [TestMethod] public void MyFirstUITest() { } } ``` In *NUnit*: ``` csharp [TestFixture] public class MyTests { [Test] public void MyFirstUITest() { } } ``` In *xUnit*: ``` csharp public class MyTests { [Fact] public void MyFirstUITest() { } } ``` ### Get hold of a window First you need to determine the correct path of the application you want to test. In *MSTest*: ``` csharp var applicationDirectory = TestContext.TestDeploymentDir; ``` In *NUnit*: ``` csharp var applicationDirectory = TestContext.CurrentContext.TestDirectory; ``` Then you create a new instance of your application ``` csharp var applicationPath = Path.Combine(applicationPath, "foo.exe"); Application application = Application.Launch(applicationPath); Window window = application.GetWindow("bar", InitializeOption.NoCache); ``` White uses the UI Automation API (UIA) to find controls on a window. UIA communicates to a displayed window via window messages. This find is performed by iterating through all the controls in a window. ### Finding a UI Item and performing action ``` csharp Button button = window.Get<Button>("save"); button.Click(); ``` ### Finding a UIItem based on SearchCriteria ``` csharp SearchCriteria searchCriteria = SearchCriteria .ByAutomationId("name") .AndControlType(typeof(TextBox)) .AndIndex(2); TextBox textBox = (TextBox) window.Get(searchCriteria); textBox.Text = "Anil"; ```