Cody, I appreciate your persistence in helping me. I'm not sure what exactly changed, but I finally managed to get things working!
For the benefit of others, I ended up with the following working code:
Settings _settings =
Manager _mgr =
SilverlightApp _app =
_settings.Web.DefaultBrowser = BrowserType.Chrome;
_settings.ClientReadyTimeout = 120000;
_settings.ElementWaitTimeout = 120000;
_settings.ExecuteCommandTimeout = 30000;
// Create the manager object
// Start the manager
// Launch a browser instance and navigate to the page
// My Silverlight app takes so long to load, that I usually need to
// put a break point here and wait for it to load before continuing
// Initialize the Silverlight app
_app = _mgr.ActiveBrowser.SilverlightApps();
_app.Find.WaitOnElementsTimeout = 30000;
// At the moment, I need to assume the button is first in the list
// of this type of element
FrameworkElement addButton = _app.Find.AllByExpression(
// Click the button
I think the problem I was running into was actually a technical issue with the DevExpress way of putting buttons on a toolbar of a data grid.
The object I was originally trying to "Find" was the actual button with name "btnAdd," but that button isn't what you're actually seeing on the UI. While the button is actually hidden, you're actually looking at an element of type "BarButtonItemLinkControl," which is the clickable link that fires the command for the button.
The other trouble I was having is that there isn't enough uniquely-identifiable information on the BarButtonItemLinkControl element to get the specific element I want, so I'm having to get back all of them and just assume the index position of the element in the returned list. That's something I can address with our development team, though.
Since this obstacle, however, I've found that the framework does a great job!
Thanks again for your help,