The playback failed to find the control with the given search properties in Coded UI

谁说胖子不能爱 提交于 2019-12-01 12:42:59

Go into the UI map and change the FilterProperty for InnerText to a SearchProperty. Search properties are applied first -- if it finds one exact match, it doesn't even look at Filter properties. In this case, the most important thing about the control (the text value) is a filter property.

It's trying to find a <LI> tag with no ID. It undoubtedly finds multiple matches. Then it applies the filter properties, which are probably things that vary from page load to page load.

You could also apply an ID property to the <LI> tags, then update the UI map search properties so that it searches for that specific ID, which would also solve the problem.

In general, when you're using Coded UI with web applications, it's a good idea to make sure everything on the page has a unique "ID" attribute. This makes it much easier for Coded UI to zero in on the page elements you're trying to interact with.

One of the interesting things about playback of CODEDUI is that it does not necessarily take into account the time factors of the User during recording. These are the things I've learned over the years about this type of error...

  1. The current window or control is not the Top Most window.
  2. The search criteria is too restrictive, ask yourself is there something in this search criteria that's not the same as the recording. In this case I can see a possible issue with this : "data-value=\"201405231131464799\"" Is that number the same every time?
  3. The control is searched for before it is ready to be done. This is fixed by calling (in your case) Custom.WaitForReady()
  4. I have also seen this (which I don't fully understand) because these recording don't have X,Y coordinates; except for the Point defined in the second parameter. If the recording screen size and the playback screen size are NOT the same, sometimes (but not always) the playback "can't find the control". You can try to omit the point parameter.
  5. The element is simply not visible.

I had a similar problem and came across this. In my case, I was using older CodedUI tests that were recorded with a slightly older version (12.0.21005.1). Same error message ("The playback failed to find the control with the given search properties") and the error specifically mentioned a Text input that it couldn't find on the page.

The answer for me was that the BrowserWindow object was losing it's reference when a the page changed (after clicking on a link on a previous page). I don't know why.

The solution was to call BrowserWindow.TryFind() in a log statement and then everything worked find as previously recorded.

Jus thought I'd share in case somebody else has this issue.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!