It seems to be able to get a handle on the spinner control, but not the inner elements.

2. For the datetimepicker control I am having a problem with setting the value into the control when it contains a checkbox, therefore the control consists of CheckBox, Month, Day, Year. The function in the DateTimePicker.cs class
public virtual void SetDate(DateTime dateTime, DateFormat dateFormat)
{
keyboard.Send(dateFormat.DisplayValue(dateTime, 0).ToString(), actionListener);
keyboard.PressSpecialKey(KeyboardInput.SpecialKeys.RIGHT, actionListener);
keyboard.Send(dateFormat.DisplayValue(dateTime, 1).ToString(), actionListener);
keyboard.PressSpecialKey(KeyboardInput.SpecialKeys.RIGHT, actionListener);
keyboard.Send(dateFormat.DisplayValue(dateTime, 2).ToString(), actionListener);
}
attempts to write the first part of the date into the checkbox, move right, then write the second part of the date into the field, move right, then write the third part of the date into the field This obviously leads to the incorrect date being set.
Additionally there is no mechanism to select/unselect the checkbox.

I temporarily got around the issue by first setting focus to the field, sending a space to the control (which selects the checkbox), and then altered the above function
public virtual void SetDate(DateTime dateTime, DateFormat dateFormat)
{keyboard.PressSpecialKey(KeyboardInput.SpecialKeys.RIGHT, actionListener); keyboard.Send(dateFormat.DisplayValue(dateTime, 0).ToString(), actionListener);
keyboard.PressSpecialKey(KeyboardInput.SpecialKeys.RIGHT, actionListener);
keyboard.Send(dateFormat.DisplayValue(dateTime, 1).ToString(), actionListener);
keyboard.PressSpecialKey(KeyboardInput.SpecialKeys.RIGHT, actionListener);
keyboard.Send(dateFormat.DisplayValue(dateTime, 2).ToString(), actionListener);
}
which moves right from the checkbox to the first field.

1. I am assuming it is a winform app. Would it possible for you to create a sample helloworld kind of app with a spinner control it, against which I can try. If you do have the source you can see there is test for Spinner. May be your spinned is shown
differently by UIAutomation. I would want to know what it is so that I can fix it.
2. I will figure how to get a checkbox and try to fix this issue.
Thanks for pointing out the issues.

Did you manage to find the source of the error with the spinner control? I got something similar when accessing Spinner.Value and I assume there is something missing in the UI Automation Implementation of the Spinner in question. The error is thrown from UIItems.Spinner's
get_Value() method.

Vivek, do you have any ideas on what could be missing so that GetValuePatern() cannot locate the spinner element? The White code throwing the error follows:

Looks like many people hit difficulties downloading the source, but I'll give it a go hopefully later today. I guess I'll quickly find some useful info googling how to download CodePlex project source.

BTW, can you post just the SpinnerTest attached to this thread? It should help others getting the same problem in future.

I've looked once again in the code of White regarding this issue. It looks like the above posted code from GetValuePattern() method actually searches for a Spinner UI Element as a child of the main Spinner.
Does that mean there is a UI Automation Spinner type requirement that the custom control of type Spinner should have a child of type Spinner as well? The actual child of our custom Spinner (NumericUpDown) is an editable TextBox (ControlType.Edit). If there
is such a requirement, do you have references to share?

I've searched for a NumericUpDown for WPF custom control implementation and found this one (see the last post):

Please use UIItem.GetElement method to get hold of AutomationElement within any UIItem. In this case inside Spinner. This is a fallback option when white doesn't support certain UIItems.
Please can you send me the output of spinner.LogStructure() so that I can accomodate this in future releases.

Would it be convenient for you to send me an email (I assume you have access to my account's email, don't you?) and I can reply you with a sample WPF project along with assembly reference of the NumericUpDown control in question. I guess it will help you to
investigate the structure and apply the necessary change in the code.

You are facing the problem because of LogActions = true. I discovered that this is bug in this. I have removed this feature altogether for next release, as this is not very useful.
Please remove this or make this false. This property has nothing to do with LogStructure().

Good, another one bytes the dust. Sounds like I'm able to help at least a bit...

I've set it to "false" and the LogStructure() passes now. Unfortunately I don't get the log file. I tried both with log4net.config and log4net section in app.config. I've used the sample from your page. BTW, you might want to extend the log4net explanation
in Home -> Configuration page.

So how can I make sure the log4net is properly configured? log4net.config is not being copied into bin/debug output folder. I don't get any errors on running the test (which actually calls LogStructure() only). The output does not mention log4net except that
the .dll is being copied.

Can I get some useful info (for you) from UI Spy or Visual UIA Verify? Let me know what else would you need.

Yes you are indeed helping. I dont know about UIAVerify but UISpy is not very reliable.

I have updated the documentation with this.
In order copy over log4net.config to output directory you would need to set open properties on file in VisualStudio and set "Copy To Output Directory" = "Copy if newer" or "Copy always"

Sure. Is there a private way I can send it to you? I'm unable to find your email.

This version is still unofficial. I can submit an issue sending the latest official .dll version, but UI Automation is not implemented there within the NumericUpDown control. Or, I can submit the project in your Issue Tracker somewhere next week.

Let me know what you think. When is the next White version 0.18 expected?

Reason I ask is I tried to create my own NullDateTimePicker using the example you gave in
the wiki but every time I tried to access the Container it said it found no items inside of it. This then
threw could not invoke errors.