Ve VS 2013 pomocí Coded UI Test Builderu nahrávám skript pro proklikání stránek.
Test se podaří vyrobit, ale při přehrávání dostávám výjimku:
Microsoft.VisualStudio.TestTools.UITest.Extension.UITestControlNotFoundException: The playback failed to find the control with the given search properties. Additional Details: TechnologyName: 'Web' ControlType: 'Hyperlink' TagName: 'A' Id: '' Name: '' Target: '' InnerText: 'Kanda Jiří' Failed to find any control that matched the search condition Id='' && Name='' && ControlType='Hyperlink' && Target='' && InnerText='Kanda Jiří' ---> System.Runtime.InteropServices.COMException: Volání součásti COM vrátilo chybu HRESULT E_FAIL.
Hraji si s vyrobeným kódem a zjišťuji, že problém se vyskytuje pouze tehdy, pokud se hledá pomocí podmínky na InnerText.
This.Xyz.SearchProperties[HtmlHyperlink.PropertyNames.InnerText] = "xyz";
Pokud je tato podmínka odstraněna, test začne fungovat.
Řešení, jak tento problém obejít, je neuvěřitelné a pro mě těžko pochopitelné. V PlaybackSettings je třeba nastavit vlastnost AlwaysSearchControls (což je nutné i pro další problém s Coded UI Testy) a navíc značně prodloužit DelayBetweenActions z výchozí hodnoty 100 ms.
Playback.PlaybackSettings.AlwaysSearchControls = true; Playback.PlaybackSettings.DelayBetweenActions = 500;