microsoft / WinAppDriver

Windows Application Driver
MIT License
3.68k stars 1.4k forks source link

Combo box list empty (Zero) Count #1188

Open Vikas1712 opened 4 years ago

Vikas1712 commented 4 years ago

Hi All, I am unable to retrieve value list from combox. Same below code work perfectly fine in Notepad --> Format--> Font --> Script comboBox list. When I compare Properties of both combox are same.

 var combo = StructuralModelWindow.FindElementByAccessibilityId("StructuralModel");
 var open = combo.FindElementByName("Open");
 combo.SendKeys(Keys.Down);
 open.Click();
  var  listItems = combo.FindElementsByTagName("ListItem");
  Debug.WriteLine($"After: Number of list items found: {listItems.Count}"); // return 0  value
Vikas1712 commented 4 years ago

JSON wire protocol commands

==========================================
POST /session/EC2826A5-826A-459A-BEBB-D2323F39BAA7/element/42.1969320/element HTTP/1.1
Accept: application/json, image/png
Content-Length: 54
Content-Type: application/json;charset=utf-8
Host: 127.0.0.1:4723
User-Agent: selenium/3.141.0 (.net windows)

{"using":"accessibility id","value":"StructuralModel"}
HTTP/1.1 200 OK
Content-Length: 96
Content-Type: application/json

{"sessionId":"EC2826A5-826A-459A-BEBB-D2323F39BAA7","status":0,"value":{"ELEMENT":"42.1510322"}}

==========================================
POST /session/EC2826A5-826A-459A-BEBB-D2323F39BAA7/element/42.1510322/element HTTP/1.1
Accept: application/json, image/png
Content-Length: 31
Content-Type: application/json;charset=utf-8
Host: 127.0.0.1:4723
User-Agent: selenium/3.141.0 (.net windows)

{"using":"name","value":"Open"}
HTTP/1.1 200 OK
Content-Length: 113
Content-Type: application/json

{"sessionId":"EC2826A5-826A-459A-BEBB-D2323F39BAA7","status":0,"value":{"ELEMENT":"42.1510322.61275579.61453.2"}}

==========================================
POST /session/EC2826A5-826A-459A-BEBB-D2323F39BAA7/moveto HTTP/1.1
Accept: application/json, image/png
Content-Length: 41
Content-Type: application/json;charset=utf-8
Host: 127.0.0.1:4723
User-Agent: selenium/3.141.0 (.net windows)

{"element":"42.1510322.61275579.61453.2"}
HTTP/1.1 200 OK
Content-Length: 63
Content-Type: application/json

{"sessionId":"EC2826A5-826A-459A-BEBB-D2323F39BAA7","status":0}

==========================================
POST /session/EC2826A5-826A-459A-BEBB-D2323F39BAA7/click HTTP/1.1
Accept: application/json, image/png
Content-Length: 12
Content-Type: application/json;charset=utf-8
Host: 127.0.0.1:4723
User-Agent: selenium/3.141.0 (.net windows)

{"button":0}
HTTP/1.1 200 OK
Content-Length: 63
Content-Type: application/json

{"sessionId":"EC2826A5-826A-459A-BEBB-D2323F39BAA7","status":0}

==========================================
POST /session/EC2826A5-826A-459A-BEBB-D2323F39BAA7/element/42.1510322/elements HTTP/1.1
Accept: application/json, image/png
Content-Length: 39
Content-Type: application/json;charset=utf-8
Host: 127.0.0.1:4723
User-Agent: selenium/3.141.0 (.net windows)

{"using":"tag name","value":"ListItem"}
HTTP/1.1 200 OK
Content-Length: 74
Content-Type: application/json

{"sessionId":"EC2826A5-826A-459A-BEBB-D2323F39BAA7","status":0,"value":[]}
liljohnak commented 4 years ago

@Vikas1712 My application creates a popup window that owns the ListItems. Perhaps yours is doing the same? Another approach is to wait until .FindElements() returns at least 1 element before proceeding because .FindElements() does not guarantee any elements will be there when it looks at machine speed.